目录
一、前言
二、介绍
Ⅰ.时间序列数据
Ⅱ.文本数据
Ⅲ.社交网络数据
三、结语
一、前言
那么本篇将互怼其他类型的数据分析的可视化方法进行介绍,它们分别是:时间序列,文本数据,社交网络数据。
二、介绍
Ⅰ.时间序列数据
import pandas as pd
import matplotlib.pyplot as plt
opsd=pd.read_csv(r'C:\Users\asuspc\Desktop\program\data\chap2\OpenPowerSystemData.csv')
opsd.plot(kind='line',x='Date',y='Solar',figsize=(10,6))
plt.ylabel('Value')
plt.show()
通过pd的read_csv的方法对数据进行读取,然后刻画折线图,俺么我们就能得出随着时间的变化值的变化大小。
当然在数据当中我们还未对缺失的数据进行处理以及一些异常值的过滤,这些将交给你,通过处理后的数据进行可视化才能够更加的完善,判断数据的变化趋势才有足够的根据性。
对于时间序列数据,我们可以用散点图和折线图进行数据分析,但是需要注意的是,时间序列的数据数据位置不能随意交换与变化,通常我们用X轴来表示时间的变化,有一定的顺序。如若发生变化则数据原有的含义将会改变。
Ⅱ.文本数据
from wordcloud import WordCloud
Tking=pd.read_csv(r'C:\Users\asuspc\Desktop\program\data\chap2\三国演义分词后.csv')
TK_fre=Tking.x.value_counts()
TK_fre=pd.DataFrame({"word":TK_fre.index,"Freq":TK_fre.values
})
TK_fre=TK_fre[TK_fre.Freq>100]
worddict={}
for key,value in zip(TK_fre.word,TK_fre.Freq):
worddict[key]=value
my_wc= WordCloud( background_color='white',width=2000 ,height=1600 ,max_words=1000 ,font_path="C:/Windows/Fonts/simhei.ttc")
my_wc.generate_from_frequencies(frequencies=worddict)
plt.figure(figsize(10,7))
plt.imshow(my_wc)
plt.axis('off')
plt.show()
我们将数据读入之后对对各个人物名字出现的频次进行计数,然后将出现名字次数大于100的囊括在变量之内,之后就是用字典的形式将数据放入其中,axis('off')是将线轴去掉,WorldCloud就是对这些数据进行词云操作的格式的设置对象,下一句则为生成,即可展示。
文本数据是最常见的非结构化数据,最常用的数据可视化的方法就是词云,通过词云的方法我们就能够对文本词汇出现的频繁程度进行可视化。我们可以看到刘备、曹操、孔明等较大的字体则是原著中出现较多次数的人物名称。
Ⅲ.社交网络数据
社交网络数据的可视化则要用到图。图这种数据结构在课程数据结构与算法当中有所提及,有学过的同学在看这一部分或许好理解,没学过的同学可以搜索相关的资料进行学习。
import networkx as nx
from networkx.drawing.nx_agraph import graphviz_layout
karate=pd.read_csv(r'C:\Users\asuspc\Desktop\program\data\chap2\karate.csv')
G=nx.Graph()
for ii in karate.index:
G.add_edge(karate.From[ii],karate.to[ii],weight=karate.weight[ii])
elarge=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight']>3.5]
esmall=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight']<3.5]
pos=graphviz_layout(G,prog='fdp')
nx.drwa_networkx_nodes(G,pos,alpha=0.4,node_size=20)
nx.drwa_networkx_edges(G,pos,edgelist=elarge,width=2,alpha=0.5,edge_color='red')
nx.drwa_networkx_edges(G,pos,edgelist=esmall,width=2,alpha=0.5,edge_color='blue',style='dashed')
nx.draw_networkx_labels(G,pos,font_size=14)
plt.axis('off')
先用方法Graph将社交图进行生成G=nx.Graph(),接着为图像添加边for ii in karate.index:
G.add_edge(karate.From[ii],karate.to[ii],weight=karate.weight[ii]),然后再根据权重的大小定义两种边elarge,esmall,再然后定义图的布局方式pos=graphviz_layout(G,prog='fdp'),nx.drwa_networkx_nodes(G,pos,alpha=0.4,node_size=20)
nx.drwa_networkx_edges(G,pos,edgelist=elarge,width=2,alpha=0.5,edge_color='red')
nx.drwa_networkx_edges(G,pos,edgelist=esmall,width=2,alpha=0.5,edge_color='blue',style='dashed'),接着可视化节点和边,nx.draw_networkx_labels(G,pos,font_size=14)最后再为节点添加标签就可以了。
三、结语
可视化对数据分析有着很大的帮助,希望大家能够在学习的过程当中慢慢体会和积累,接下来我们要接触的是样本数据之间的距离。