【matplotlib】【notebook】淘宝评论数据指标——
工具:jupyter notebook
观察perfectdiary_data.xlsx源文件的表格数据,利用筛选工具,发现近的日期是“2021-01-02”,最早的日期是“2020-11-12”。我们需要绘制出这个时间区间,每一天发布评论的数量的折线图,x轴取日期的值,y轴取该日期的频数,日期为“2021-01-02”格式,不需要时分秒(即后半部分)。
导入包:
import pandas as pd
import re
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from pylab import *
from datetime import date,datetime
读取数据:
df=pd.read_excel('perfectdiary_data.xlsx',index_col=None)
print(len(df['rateDate']))
df['rateDate'].values
print(type(df['rateDate'].values))
列表转字符串:
content = ''
c_list = []
for i in df['rateDate'].values:
content += i[:10]+' '#取到每个字符索引9的位置,即只取出年月日;拼接空格,以便分割成列表
c_list=content.split(' ')#返回数据类型为列表
c_list=sorted(c_list)#升序排列
c_list
结果如图:
发现获得的列表,第一个值为空,需要去掉,看下面代码:c_list[1:]。
统计每个日期出现的频数:
result_dic={}
for item_str in c_list[1:]:#从第二个值开始取值
if item_str not in result_dic:
result_dic[item_str]=1
else:
result_dic[item_str]+=1
len(result_dic)
赋给x,y轴数据:
x_data=[]
y_data=[]
for key in result_dic:
x_data.append(key) #时间
y_data.append(result_dic[key]) #出现的频次
y_data
结果如下图:
绘制折线图:
#设置x,y轴的数值
x = np.array(x_data)
y = np.array(y_data)
#正常显示中文标签
plt.rcParams['font.sans-serif']=['SimHei']
#创建绘图对象,figsize参数可以指定绘图对象的宽度和高度
plt.figure(figsize=(45,8))
#在当前绘图对象中画图(x轴,y轴,给所绘制的曲线的名字,画线颜色,画线宽度)
plt.plot(x,y,label="每个时间点发布评论的频数",color="blue",linewidth=2)
#X轴的文字
plt.xlabel("rateDate")
#Y轴的文字
plt.ylabel("Frequency")
#图表的标题
plt.title("时间折线图")
#Y轴的范围
plt.ylim(0,320)
#显示图示
plt.legend()
#显示图
plt.show()
#保存图
plt.savefig("时间折线图.jpg")
参考链接:https://www.jb51.net/article/130979.htm
结果如下图(红色字体是截图的时候标的):
完结,撒花