python - Matplotlib - 时间序列分析 Python
问题描述
我正在尝试使用此数据(https://gist.github.com/datomnurdin/33961755b306bc67e4121052ae87cfbc)创建两种类型的时间序列。首先每天计数多少。每天第二总情绪。
每天第二总情绪的代码。
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('data_filtered.csv', parse_dates=['date'], index_col='date')
def plot_df(df, x, y, title="", xlabel='Date', ylabel='Value', dpi=100):
plt.figure(figsize=(16,5), dpi=dpi)
plt.plot(x, y, color='tab:red')
plt.gca().set(title=title, xlabel=xlabel, ylabel=ylabel)
plt.show()
plot_df(df, x=df.index, y=df.sentiment, title='Sentiment Over Time')
第二个时间序列图对我来说似乎没有任何意义。也可以保存该图以供将来参考。
解决方案
尝试检查源数据。
日期
如果我尝试date
使用以下代码绘制分布:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('data_filtered.csv', parse_dates = ['date'])
df['date'].hist()
plt.show()
我得到:
如您所见,大多数date
值都集中在2020-05-19
or附近2020-05-30
,两者之间没有。因此,仅在图表的左侧和右侧而不是在中间查看点是有意义的。
情绪
如果我尝试sentiment
使用以下代码绘制分布:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('data_filtered.csv', parse_dates = ['date'])
df['sentiment'].hist()
plt.show()
我得到:
如您所见,这些sentiment
值集中在三组中-1
:0
和1
; 没有其他价值。因此,仅在图形的底部、中心和顶部查看点是有意义的,而不是其他任何地方。
散点图
最后,我尝试在散点图中组合date
和:sentiment
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('data_filtered.csv', parse_dates = ['date'])
fig, ax = plt.subplots(1, 1, figsize = (16, 5))
ax.plot(df['date'], df['sentiment'], 'o', markersize = 15)
ax.set_title('Sentiment Over Time')
ax.set_xlabel('Date')
ax.set_ylabel('Value')
plt.show()
我得到:
这正是您的图表,但这些点没有通过线连接。您可以看到这些值是如何集中在特定区域而不是分散的。
累积
如果要按 聚合sentiment
值date
,请检查以下代码:
import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('data_filtered.csv', parse_dates = ['date'])
df_cumulate = df.groupby(['date']).sum()
def plot_df(df, x, y, title="", xlabel='Date', ylabel='Value', dpi=100):
plt.figure(figsize=(16,5), dpi=dpi)
plt.plot(x, y, color='tab:red')
plt.gca().set(title=title, xlabel=xlabel, ylabel=ylabel)
plt.savefig('graph.png')
plt.show()
plot_df(df_cumulate, x=df_cumulate.index, y=df_cumulate.sentiment, title='Sentiment Over Time')
我通过这条线汇总数据df = pd.read_csv('data.csv', parse_dates = ['date'])
;sentiment
这里是随时间累积的图:
推荐阅读
- mongodb - 在 MongoDB 中查询 $avg 星期几 (mon avg, tue avg, wed avg) $sum
- node.js - 找不到进度条画布的公式(调平系统)
- while-loop - 不能在while循环中内爆最后一个逗号
- python - IndexError:字符串索引超出范围 python 旋转甜甜圈调试
- ajax - 使用ajax上传大图片的问题
- python-3.x - 悬停动画在 PyQT5 的 QSS 中不起作用
- python - DJANGO 没有在我的 html 模板中返回上下文
- python - 使用函数时日期时间的 Pandas 数据框问题
- javascript - 如何实时混合两个 WebGL 画布?
- javascript - 我应该如何在 NextJS 中构建我的简单笔记应用程序的布局?