R. *_*lor 5 python pandas seaborn
Noobish Seaborn / Pandas 问题:我有一个 Facebook 页面帖子数据的电子表格,如下所示(前 20 行):
| Name | ID | Type | Date | Shares | Comments | Reactions | Engagement |
|------------------------|-----------------|-----------|------------------|--------|----------|-----------|------------|
| Herman Toothrot's Page | 201295459914847 | link | 13/05/2020 09:00 | 61 | 39 | 610 | 710 |
| Guybrush's Page | 167959249906191 | link | 13/05/2020 09:04 | 4 | 27 | 481 | 512 |
| Elaine's Page | 187202271820522 | album | 13/05/2020 09:12 | 0 | 3 | 96 | 99 |
| Elaine's Page | 187202271820522 | album | 13/05/2020 09:14 | 1 | 14 | 426 | 441 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:20 | 3 | 8 | 158 | 169 |
| Herman Toothrot's Page | 201295459914847 | link | 13/05/2020 09:20 | 26 | 101 | 508 | 635 |
| Elaine's Page | 187202271820522 | undefined | 13/05/2020 09:23 | 1 | 11 | 109 | 121 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:28 | 2 | 257 | 987 | 1246 |
| Herman Toothrot's Page | 201295459914847 | photo | 13/05/2020 09:30 | 1 | 0 | 178 | 179 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:31 | 3 | 6 | 162 | 171 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:38 | 44 | 143 | 4294 | 4481 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:39 | 7 | 79 | 631 | 795 |
| Herman Toothrot's Page | 201295459914847 | link | 13/05/2020 09:40 | 3 | 0 | 104 | 107 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:45 | 0 | 3 | 76 | 79 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:45 | 20 | 78 | 1455 | 1553 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:46 | 7 | 321 | 1847 | 2175 |
| Guybrush's Page | 167959249906191 | link | 13/05/2020 09:46 | 4 | 2 | 311 | 317 |
| Elaine's Page | 187202271820522 | photo | 13/05/2020 09:50 | 2 | 29 | 777 | 808 |
| Elaine's Page | 187202271820522 | link | 13/05/2020 09:53 | 0 | 0 | 115 | 115 |
| Herman Toothrot's Page | 201295459914847 | link | 13/05/2020 10:00 | 143 | 255 | 10211 | 10609 |
Run Code Online (Sandbox Code Playgroud)
实际数据集会持续多天。
我想制作一个 Seaborn 线图,以时间为 X 轴(“日期”),然后将帖子计数(按天)作为 Y 轴。
然后,我想将数字变量之一设置为 SIZE 参数,并按 HUE 分解页面(“名称”)。
因此,最终结果将类似于 Seaborn 教程示例:
我从概念上知道,这需要每天重新采样(或某种分组?),以便每天为每个页面创建汇总数据桶,就像在这个 Excel 数据透视表中一样:
我怀疑这可能还需要 MultiIndex?
我以为我会有所收获,
facebook_dataframe.groupby(["Name", "Date", "Reactions"], as_index=False)["Engagement"].sum()
Run Code Online (Sandbox Code Playgroud)
...但我不想仅通过参与度(或仅通过任何一个变量)进行求和,并且我希望能够按天进行绘图。
我尝试过按天重新采样数据帧,但最终得到了一系列显示计数或总和的数据,而我想要几天的时间,所有数字变量都完好无损(根据上面的数据透视表)。
我希望这一点很清楚。我很欣赏提供的 20 个样本行都在一天内出现,但任何建议解决方案都可以按分钟重新采样,方法会是相同的吗?非常感谢任何帮助
IIUC,您想要做的是groupby使用pd.Grouper给出您想要的频率和名称,然后agg与您想要获得的所有列和函数一起使用,例如:
data = (df.groupby([pd.Grouper(key='Date', freq='5T'), #replace 5T by D to get daily agggregation
'Name'])
.agg(count=('Name','count'),
sum_shares=('Shares','sum'),
sum_comments=('Comments','sum'),
sum_engagement=('Engagement','sum'), )
.reset_index()
)
print (data.head())
Date Name count sum_shares \
0 2020-05-13 09:00:00 Guybrush's Page 1 4
1 2020-05-13 09:00:00 Herman Toothrot's Page 1 61
2 2020-05-13 09:10:00 Elaine's Page 2 1
3 2020-05-13 09:20:00 Elaine's Page 2 4
4 2020-05-13 09:20:00 Herman Toothrot's Page 1 26
sum_comments sum_engagement
0 27 512
1 39 710
2 17 540
3 19 290
4 101 635
Run Code Online (Sandbox Code Playgroud)
那么你可以使用seaborn像:
import seaborn as sns
sns.lineplot(x='Date', y='count', data=data,
hue='Name',
size='sum_shares') #here for the size use what summed column you want
Run Code Online (Sandbox Code Playgroud)
我不发布图像,因为给出的 20 行数据实际上没有什么可看的。
| 归档时间: |
|
| 查看次数: |
3112 次 |
| 最近记录: |