加载包和数据

使用数据相关包

我一般会使用pandas和os的包读取我的数据。

import pandas as pd
import os
import numpy as np
from collections import Counter               # 基本计数库

文件路径

为方便数据和程序文件的移动,一般采用相对路径,可以使用“…/”的形式,但建议使用os.getcwd获取当前程序路径,进行路径拼接

origin_path = os.getcwd()
# 获取当前文件夹下所有的文件的列表
File_list = os.listdir(origin_path)
source_path = os.path.join(origin_path,"data.csv")

数据读取

在数据读取时一般有几种数据格式:csv,xlsx,txt等。
数据也有几种不同的格式:GBK,UTF-8,ISO-8859-1等。
数据也有是否有表头,是否有行标签等。

df1 = pd.read_csv(source_path,header = None)        # 无表头的读取方式
df1 = pd.read_excel(source_path,encoding = 'utf-8') # 以utf-8格式存储的数据# 显示一些数据基本信息
df1.columns                                         # 显示数据列标签
df1.iloc[i]                                         # 以字典形式显示第i行

数据层面的操作

数据层面的操作更多依赖于pandas和numpy两个库,依赖的数据类型主要是DataFrame,array等。
原则:能批量处理的就批量处理,能使用库的就使用库,尽量避免使用for循环大量数据。

分割矩阵

# 数据,等分份数,分割方式axis=0/1 上下/左右
dx,b = np.split(data,2,axis=0)        # 上下均等分离矩阵
dy = b.reset_index(drop=True)         # 对第二个矩阵重新赋index,不然会出现index缺失导致逻辑错误

新建矩阵

# 建立一个长度为Nob_dict的全0,int型矩阵
Second_list = np.zeros((len(Nob_dict),len(Nob_dict)),dtype=np.int)
# 为矩阵添加行列标签
Frame_Second = pd.DataFrame(Second_list,columns = list(Nob_dict.values()),index = list(Nob_dict.values()))

获取数据标签的集合

# 获取ID的字典,若不在ID字典当中,则扩充字典。max_dict为最后一个ID的序号,后续序号需要进行+1
Nob_dict = {}
for i in range(len(df1["Gotchi"])):      # Gotchi为计数列Nob_dict.update({df1["Gotchi"][i]:i+1})max_dict = i+1

DataFrame上的批量操作

df2 = pd.DataFrame(columns=df1.columns)# columns可选,是否创建列名
df2 = df2.append([dict(df1.iloc[i])],ignore_index=True) # 可以使用append的形式以行添加dict形式的一行数据ignore_index是以行形式添加boston = pd.concat([features,label],axis =1) # 合并按照列合并数据

数据排序

sorted(list(boston['feature']),reverse=True) # 排序,以倒叙进行排序

计算特征数量

Counter(df1['feature']).most_common # 按照数量最多的开始显示,可选参数为个数

计算相关系数和对应的显著性

r,p_value = stats.pearsonr(boston['feature1'],boston['feature2']) # 计算相关系数和对应的显著性
print('feature1与feature1相关系数为{:.3f},p值为{:.5f}'.format(r,p_value)) # 相关系数保留3位小数,p值保留5位小数

透视表格重构

buyer_seller = buyer_seller.pivot_table(index='feature', columns='index', values='Value').fillna(0)

计算平均度

import networkx as nx# 计算平均度
edgeNum = 5000    # 边数
nodeNum = 1878    # 节点数
average_degree=edgeNum*2.0/nodeNum
print("平均度:"+str(average_degree))
degree_distribute=nx.degree_histogram(buyer_seller_or) # buyer_seller_or关系列
x=range(len(degree_distribute))
y=[z/float(sum(degree_distribute))for z in degree_distribute]
plt.loglog(x,y)
plt.show()

参考链接: Facebook社交网络的特征–基于小世界网络

画图

绘制散点矩阵图

import matplotlib.pyplot as plt
import seaborn as seb
seb.pairplot(data = boston,vars = [feature]) # feature是所选的特征
plt.savefig('scatter fig.png',dpi=500,hue="species")#绘图结果存到本地

绘制相关系数的热力图

import seaborn as seb
r_pearson = boston.corr()
#seb.heatmap(data = r_pearson)
seb.heatmap(data = r_pearson,cmap="YlGnBu")

绘制散点图

plt.scatter([x for x in range(len(boston['feature']))],boston['feature']) #绘制y的曲线
plt.show()

绘制正太曲线图

import matplotlib.mlab as mlab
import seaborn as snsimport warnings
warnings.filterwarnings('ignore') # 不发出警告sns.set(context='notebook',font='simhei',style='whitegrid')# 设置风格尺度和显示中文
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号# 直方图
from scipy.stats import norm # 使用直方图和最大似然高斯分布拟合绘制分布s=np.log(list(boston['feature'])) # 特征数据np.log(list)幂律分布
s=boston['feature']               # 特征数据正太分布mu =np.mean(s) # 计算均值
sigma =np.std(s)
num_bins = len(s) # 直方图柱子的数量
n, bins, patches = plt.hist(s, num_bins, density=1, facecolor='blue', alpha=0.55,width = 0.0050)
# 直方图函数,x为x轴的值,normed=1表示为概率密度,即和为一,绿色方块,色深参数0.55,返回n个概率,直方块左边线的x值,及各个方块对象
y = norm.pdf(bins, mu, sigma)#拟合一条最佳正态分布曲线y
#str='Histogram : $\mu=5.8433$'+str(mu)+',$\sigma=0.8253$';
plt.grid(False) # 无网格
plt.plot(bins, y, 'r--') # 绘制y的曲线
plt.xlabel('x-label') # 绘制x轴
plt.ylabel('y-label') #绘制y轴
plt.title(r'Histogram : $\mu={}$,$\sigma={}$'.format(mu,sigma)) # 在题目中显示mu与sigma#plt.subplots_adjust(left=0.15) # 左边距
plt.savefig('Probability fig.png',dpi=1000,bbox_inches = 'tight') # 绘图结果存到本地
plt.show()

保存数据

pd.DataFrame(save_data).to_csv(save_path) # save_data可以是list形式的二维表格
save_date.to_excel(save_path,index = False)# save_data是DataFrame格式的数据# index = False表示没有行标签

生成关系网络

使用Gephi或者network可以生成关系网络,直接加载两个关系列,然后需要调整K-核心和巨人组件。

社交网络分析方法以及基本图例相关推荐

  1. 【2017年第2期】社交网络分析在公共安全领域的应用

    邵蓥侠, 冯是聪 北京明略软件系统有限公司,北京 102218 摘要:社交网络分析技术是一种通用有效的研究社会人员之间复杂关系模式的方法.以公安领域为背景,首先介绍了社交网络分析理论,然后详细阐述该技 ...

  2. 社交网络分析与反欺诈

    一.总体概述 目前针对图网络结构,比较热门的一个部分就是知识图谱,知识图谱是基于二元关系知识库,构成网络结构,基本组成单位是"实体-关系-实体"的三元组,实体之间通过关系相互联结. ...

  3. 别说我懂社交网络: 关于社交网络分析的一头雾水

    社交网络,对每一个人是熟悉而又陌生的.每一个人都能够说出个一二三,由于人是社会的动物.每一个人都有自己的社交圈子即社交网络.然而,就社交网络的应用开发尤其是移动互联网社交应用而言,虽然创业团队不停地涌 ...

  4. Social Network 社交网络分析

    Social Network 社交网络分析 一:什么是SNA-社交网络分析 社交网络分析的威力何在?我想几个案例来说明. 案例1:对一个毫无了解的组织(这个组织可以是一个公司,亦或是一个组织),如果能 ...

  5. python用社交网络分析_Python社交媒体情感分析入门

    python用社交网络分析 自然语言处理(NLP)是一种机器学习,可解决口语/书面语言与这些语言的计算机辅助分析之间的相关性. 从写作帮助和建议到实时语音翻译和口译,我们在日常生活中经历了NLP的众多 ...

  6. 独家 | 一文读懂社交网络分析-下(应用、前沿、学习资源)

    点击查看全文 本文主要阐述: 社交网络分析的应用 社交网络前沿研究 学习资料 参考资料 浏览前三章的内容请见上篇(2017年9月26日头条). 四. 社交网络分析的应用 1. 社交推荐 社交推荐顾名思 ...

  7. 独家 | 一文读懂社交网络分析-上(附学习资源)

    本文主要阐述: 社交网络的结构特性与演化机理 社交网络群体行为形成与互动规律 社交网络信息传播与演化机理 浏览后四章的内容请见下篇(2017年9月26日二条). 前言 社交网络在维基百科的定义是&qu ...

  8. 疯狂吸金1600个亿的拼多多,社交网络分析到底隐藏多少财富?

    2018年7月26日,拼多多在美国上市了,市值1600亿人民币. 拼多多创始人黄峥 原本众多人都不喜爱的拼多多,也不愿使用的拼多多,就这样成功上市,成为了市值千亿的互联网企业.创始人黄峥也创造了一个奇 ...

  9. 社交网络分析的 R 基础:(三)向量、矩阵与列表

    在第二章介绍了 R 语言中的基本数据类型,本章会将其组装起来,构成特殊的数据结构,即向量.矩阵与列表.这些数据结构在社交网络分析中极其重要,本质上对图的分析,就是对邻接矩阵的分析,而矩阵又是由若干个向 ...

最新文章

  1. 2009-徘徊-开场白
  2. 物联网白皮书【2018】重磅发布|今年的物联网产业交出了一张怎样的答卷
  3. 无人机送外卖已落地深圳,这体验有多爽?你根本想不到!
  4. 钉钉如何调整组织架构_阿里宣布新一轮组织架构调整:明确大文娱一号位,钉钉进入阿里云...
  5. inotify-tools使用方法介绍
  6. django解决借用Model使用数据库时报错 AttributeError: Manager isn‘t accessible via xxxxxModel instances
  7. android cardview控件,CardView控件的使用方式
  8. 通过javaBean反射转换成mybatis映射文件
  9. Java性能优化的七个方向
  10. Android 加密
  11. 手机游戏修改客户端服务器,服务器 客户端手机游戏
  12. 茶艺概述20210411
  13. 机器也能自主区分反义词-同义词 ?!
  14. [java]如何在项目中用好log4J写项目日志
  15. iOS开发证书不受信任
  16. tuple unpacking
  17. Python知识拓展
  18. 电脑用USB连接欧姆龙安全PLC失败解决方案
  19. 如何部署超级签名分发平台系统?
  20. 尽一切努力提高生产率

热门文章

  1. 使用PyTorch中的预训练模型进行图像分类
  2. python二维数组求和_Python如何对二维数组求和
  3. 1024是什么节日 (中国程序员节)
  4. 【Android应用开发详解】第01期:第三方授权认证(一)实现第三方授权登录、分享以及获取用户资料
  5. Qt例子学习笔记 - Examples/Qt-6.2.0/charts/callout
  6. 2020Android大厂高频面试题(字节跳动+阿里,作为Android开发程序员
  7. 新安装Win7 Windows Update 错误 代码80072EE2 80072EFE
  8. 解决微软Edge浏览器和IE浏览器下载无反应的问题
  9. Android Tips - 填坑手册
  10. ERP系统如何通过存储过程导出报表数据