一、分析数据可视化好友男女分布比例
1 plt.rcParams['font.sans-serif']=['SimHei'] 2 #用来正常显示中文标签 3 plt.rcParams['axes.unicode_minus']=False 4 5 # 1.读取csv文件,把性别信息读取出来 6 def getSex(filename): 7 lstsex = [] 8 with open(filename, 'r') as fr: 9 reader = csv.reader(fr) 10 for i in reader: 11 lstsex.append(i[4]) 12 return lstsex 13 14 15 # 2.性别可视化 16 def VisualSexpyechart(lstsex): 17 sex = dict() 18 # 2.1提取好友性别信息,从1开始,因为第0个是自己 19 for f in lstsex[1:]: 20 if f == '1': # 男 21 sex["man"] = sex.get("man", 0) + 1 22 elif f == '2': # 女 23 sex["women"] = sex.get("women", 0) + 1 24 else: # 未知 25 sex["unknown"] = sex.get("unknown", 0) + 1 26 # 在屏幕上打印出来 27 total = len(lstsex[1:]) 28 # 2.2打印出自己的好友性别比例 29 print("男性好友: %.2f%%" % (float(sex["man"]) / total * 100) + " " + "女性好友: %.2f%%" % ( 30 float(sex["women"]) / total * 100) + " " + 31 "不明性别好友: %.2f%%" % (float(sex["unknown"]) / total * 100)) 32 plt.figure(figsize=(6,9)) 33 labels = [u'男性好友',u'女性好友',u'性别不明'] 34 sizes = [sex['man'],sex['women'],sex['unknown']] 35 colors = ['red','yellowgreen','lightskyblue'] 36 explode = (0.05,0,0) 37 patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors,labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,startangle = 90,pctdistance = 0.6) 38 for t in l_text: 39 t.set_size(30) 40 for t in p_text: 41 t.set_size(20) 42 plt.axis('equal') 43 plt.legend() 44 plt.show() 45 46 # 3.执行主程序,得到所有好友性别 47 VisualSexpyechart(getSex("我的微信好友信息.csv"))
二、可视化省份来源
1 import csv 2 3 from matplotlib import pyplot as plt 4 5 import matplotlib.pylab as plt 6 7 plt.rcParams['font.sans-serif']=['SimHei'] 8 #用来正常显示中文标签 9 plt.rcParams['axes.unicode_minus']=False 10 11 # 1.读取csv文件,把省份信息读取出来 12 def getCity(filename): 13 lstcity = [] 14 with open(filename, 'r') as fr: 15 reader = csv.reader(fr) 16 for i in reader: 17 lstcity.append(i[3]) 18 return lstcity 19 20 21 # 2.可视化 22 def VisualSexpyechart(lstcity): 23 city = dict() 24 # 2.1提取好友省份信息 25 for f in lstcity[1:]: 26 if f == '山东': 27 city["山东"] = city.get("山东", 0) + 1 28 elif f == '黑龙江': 29 city["黑龙江"] = city.get("黑龙江", 0) + 1 30 elif f == '澳门': 31 city["澳门"] = city.get("澳门", 0) + 1 32 elif f == '吉林': 33 city["吉林"] = city.get("吉林", 0) + 1 34 elif f == '江苏': 35 city["江苏"] = city.get("江苏", 0) + 1 36 elif f == '贵州': 37 city["贵州"] = city.get("贵州", 0) + 1 38 elif f == '上海': 39 city["上海"] = city.get("上海", 0) + 1 40 elif f == '湖北': 41 city["湖北"] = city.get("湖北", 0) + 1 42 elif f == '北京': 43 city["北京"] = city.get("北京", 0) + 1 44 elif f == '浙江': 45 city["浙江"] = city.get("浙江", 0) + 1 46 elif f == '河北': 47 city["河北"] = city.get("河北", 0) + 1 48 elif f == '辽宁': 49 city["辽宁"] = city.get("辽宁", 0) + 1 50 elif f == '吉林': 51 city["吉林"] = city.get("吉林", 0) + 1 52 else : 53 city["未知"] = city.get("未知", 0) + 1 54 plt.figure(figsize=(6,9)) 55 #labels = [u'山东',u'黑龙江',u'澳门',u'吉林',u'江苏',u'贵州',u'上海',u'湖北',u'北京',u'浙江',u'河北',u'辽宁',u'吉林',u'未知'] 56 #sizes = [city["山东"],city["黑龙江"],city["澳门"],city["吉林"],city["江苏"],city["贵州"],citycity["上海"],city["湖北"],city["北京"],city["浙江"],city["河北"],city["辽宁"],city["吉林"],city["未知"]] 57 #colors = ['#ffff00','#ffcc00','#fff9900','#ff6600','#ff3300','#ffffcc','#ff99cc','#ff66cc','#dd33cc','#ff00ff','#99ff00','#99cc00','#996600','#993300'] 58 x=[1,2,3,4,5] # 确定柱状图数量,可以认为是x方向刻度
这里随机找五个省份进行可视化 59 y=[city["山东"],city["黑龙江"],city["澳门"],city["吉林"],city["江苏"]] # y方向刻度 60 61 color=['red','black','peru','orchid','deepskyblue'] 62 x_label=['山东','黑龙江','澳门','吉林','江苏'] 63 plt.xticks(x, x_label) # 绘制x刻度标签 64 plt.bar(x, y,color=color) # 绘制y刻度标签 65 66 #设置网格刻度 67 plt.grid(True,linestyle=':',color='r',alpha=0.6) 68 plt.show() 69 70 # 3.执行主程序,得到所有好友性别 71 VisualSexpyechart(getCity("我的微信好友信息.csv"))
三、签名的情感强度值
首先将csv文件中的签名信息提取并保存到sign.txt中
1 import csv 2 3 with open('我的微信好友信息.csv','r')as csvfile: 4 reader = csv.reader(csvfile) 5 #遍历每一行数据 6 for row in reader: 7 #获取签名数据 8 signature = row[5] 9 #如果签名不为空,则保存到txt文件中 10 if signature: 11 with open('sign.txt','a')as f: 12 f.write(signature + '\n')
下面文件signEn.txt为sign.txt英文版
1 import xlrd 2 from textblob import TextBlob 3 import nltk 4 import numpy as np 5 import pandas as pd 6 from pyecharts.charts import Pie 7 import csv 8 from pyecharts import options as opts 9 10 from matplotlib import pyplot as plt 11 plt.rcParams['font.sans-serif']=['SimHei'] 12 #用来正常显示中文标签 13 plt.rcParams['axes.unicode_minus']=False 14
blob 15 with open('signEn.txt', 'r') as file: 16 signatures = file.read() 17 polarity_scores = [] 18 positive=0 19 negative=0 20 neutral=0 21 for signature in signatures.split('\n'): 22 blob = TextBlob(signature) 23 polarity_scores.append(blob.sentiment.polarity) 24 for i, score in enumerate(polarity_scores): 25 if score > 0:
注释部分为输出判断签名的极性 26 #print(f"Signature {i+1} is positive.") 27 positive+=1 28 elif score < 0: 29 #print(f"Signature {i+1} is negative.") 30 negative+=1 31 else: 32 #print(f"Signature {i+1} is neutral.") 33 neutral+=1 34 igsize=(6,9) 35 labels = [u'positive',u'negative',u'neutral'] 36 sizes = [positive,negative,neutral] 37 colors = ['red','yellowgreen','lightskyblue'] 38 explode = (0.05,0,0) 39 patches,l_text,p_text=plt.pie(sizes,explode=explode,labels=labels,colors=colors, 40 labeldistance = 1.1,autopct = '%3.1f%%',shadow = False, 41 startangle = 90,pctdistance = 0.6) 42 for t in l_text: 43 t.set_size(30) 44 for t in p_text: 45 t.set_size(20) 46 plt.axis('equal') 47 plt.legend() 48 plt.show()
标签:city,elif,plt,get,微信,sex,可视化,import,好友 From: https://www.cnblogs.com/Szxszx/p/17275835.html