Python 3.x Seaborn plot中一周中的某一天为X
我有一个包含点击和印象的数据集,我使用groupby和agg按周数来汇总它们Python 3.x Seaborn plot中一周中的某一天为X,python-3.x,pandas,matplotlib,seaborn,Python 3.x,Pandas,Matplotlib,Seaborn,我有一个包含点击和印象的数据集,我使用groupby和agg按周数来汇总它们 df2=df.groupby('day_of_week',as_index=False, sort=True, group_keys=True).agg({'Clicks':'sum','Impressions':'sum'}) 然后我试着用子图把它们画出来 f, axes = plt.subplots(2, 2, figsize=(7, 7)) sns.countplot(data=df2['Clicks'], x
df2=df.groupby('day_of_week',as_index=False, sort=True, group_keys=True).agg({'Clicks':'sum','Impressions':'sum'})
然后我试着用子图把它们画出来
f, axes = plt.subplots(2, 2, figsize=(7, 7))
sns.countplot(data=df2['Clicks'], x=df2['day_of_week'],ax=axes[0, 0])
sns.countplot(data=df2["Impressions"], x=df2['day_of_week'],ax=axes[0, 1])
但是,取而代之的是使用一周中的某一天作为X,绘图使用的是点击和印象中的值。有没有一种方法可以在值为Y的情况下强制X为一周中的某一天?谢谢
完整代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("whitegrid")
df=pd.read_csv('data/data_clean.csv')
df2=df.groupby('day_of_week',as_index=False, sort=True, group_keys=True).agg({'Clicks':'sum','Impressions':'sum'})
f, axes = plt.subplots(2, 2, figsize=(7, 7))
sns.countplot(data=df2['Clicks'], x=df2['day_of_week'],ax=axes[0, 0])
sns.countplot(data=df2["Impressions"], x=df2['day_of_week'],ax=axes[0, 1])
plt.show()
伪造数据:
day_of_week,Clicks,Impressions
0 100 2000
1 400 4000
2 300 3500
3 200 2000
4 100 1000
5 50 500
6 10 150
基于seaborn文档,我认为
countplot
需要一个长格式的数据帧,比如您的df
,而不是您在问题中构建和传递的预聚合df2
<代码>计数绘图为您进行计数
但是,您的df2
已准备好进行条形图:
df2.plot(kind='bar', y=['Impressions', 'Clicks'])
结果:
在彼得的指导下,我通过seaborn找到了答案 正确的绘图代码是
sns.barplot( x=df2['day_of_week'],y=df2['Clicks'] , color="skyblue", ax=axes[0, 0])
sns.barplot( x=df2['day_of_week'],y=df2['Impressions'] , color="olive", ax=axes[0, 1])
似乎seaborn在默认情况下会将第一个变量作为X而不是Y。请阅读并理解,然后您的问题将包含这样一个可运行的示例。然后清楚地解释你想看什么。完成了,很抱歉之前不清楚。谢谢,我现在正在查看文档,在不同的子地块中创建这个。