簡體   English   中英

如何繪制時間序列來研究項目的頻率?

[英]How to plot a time-series to study frequency of items?

我需要繪制時間相同的值以查看頻率如何變化。 特別是隨着時間從不同用戶生成的帖子。 我有一個如下所示的數據集:

       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

其中 DATE 是數字(順序數字而不是日期格式)我最初的想法是通過使用 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

首先,讓我們過濾您的數據框,以便您只有少數帖子:

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()

如果您不關心置信區間,您可以在sns調用中添加ci=None ,這將使代碼運行得更快。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM