Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Seaborn plot中一周中的某一天为X_Python 3.x_Pandas_Matplotlib_Seaborn - Fatal编程技术网

Python 3.x Seaborn plot中一周中的某一天为X

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

我有一个包含点击和印象的数据集,我使用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['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。

请阅读并理解,然后您的问题将包含这样一个可运行的示例。然后清楚地解释你想看什么。完成了,很抱歉之前不清楚。谢谢,我现在正在查看文档,在不同的子地块中创建这个。