如何绘制时间序列来研究项目的频率?

2024-05-23 23:34:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要通过绘制相同的时间值来了解频率是如何变化的。特别是不同用户通过时间生成的帖子。我的数据集如下所示:

       GENDER          POST  DATE  COUNTER
0      men    (post 103)     36        43
1      men    (post 109)     38        2
2      men    (post 116)     41        12
3      men    (post 119)     42        32
4      men    (post 124)     44        2
..       ...           ...   ...      ...
82   women     (post 83)     29        34
83   women     (post 86)     30        2
84   women     (post 86)     65        9
85   women     (post 91)     32        5
86   women     (post 99)     35        5

其中日期为数字(序列号而非日期格式) 我最初的想法是使用seaborn选择我感兴趣的专栏:

from  matplotlib import pyplot
import seaborn

fg = seaborn.FacetGrid(data=df_, hue='GENDER', aspect=1.61)
fg.map(pyplot.scatter, 'DATE', 'COUNTER').add_legend()

但是为了得到如下图所示的情节:

https://imgur.com/bAKogi9

我想我应该考虑一个时间序列,以便通过时间追踪帖子。 在每个图的x轴上有日期(DATE),在y轴上有帖子的频率(COUNTER

我考虑用于此分析的csv文件包括以下列:

file = '...'

with open(file, newline='') as csvfile:
    df = csv.reader(csvfile, delimiter=';', quotechar='|')
    for row in df:
         print(' '.join(row)) 
df = pd.read_csv(file, sep=';') # or your sep in file
df.columns = [' ', 'GENDER', 'POST', 'DATE', 'COUNTER',' ']

非常感谢你抽出时间来帮助我

更新:

        GENDER  POST DATE COUNTER
0       (man 8) (post 4) 0  0   NaN
1       (woman 13)  (post 1) 2  0   NaN
2       (man 14)    (post 7) 2  2   NaN
3       (man 8) (post 4) 4  1 NaN
4       (woman 19)  (post 12) 4 1   NaN

Tags: csvdfdatecounter时间seabornnangender
1条回答
网友
1楼 · 发布于 2024-05-23 23:34:53

首先,让我们过滤您的数据帧,这样您就只有少数帖子了:

import seaborn as sns

post_list = ['(post 103)','(post 109)','(post 116)']
df2 = df[df.POST.isin(post_list)]

那么,像这样的事情应该做:

for post in df2.POST.unique():
    sns.lineplot(x='DATE',y='COUNTER', hue='GENDER', data=df2[df2.POST==post])
plt.show()

如果不关心置信区间,可以将ci=None添加到sns调用中,这将使代码运行更快

相关问题 更多 >