Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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 使用每日数据集绘制以月份为x轴的seaborn箱线图_Python_Seaborn_Boxplot - Fatal编程技术网

Python 使用每日数据集绘制以月份为x轴的seaborn箱线图

Python 使用每日数据集绘制以月份为x轴的seaborn箱线图,python,seaborn,boxplot,Python,Seaborn,Boxplot,我有这样一个数据集: >>> print(ds.head()) date sum 0 2013-08-31 19.000 1 2013-09-01 37.000 2 2013-09-02 10.750 3 2013-09-03 21.500 4 2013-09-04 44.125 >>> print(ds.tail()) date sum 174

我有这样一个数据集:

>>> print(ds.head())

         date     sum
  0  2013-08-31  19.000
  1  2013-09-01  37.000
  2  2013-09-02  10.750
  3  2013-09-03  21.500
  4  2013-09-04  44.125

>>> print(ds.tail())


            date      sum
    1742  2018-08-24  129.875
    1743  2018-08-25  196.375
    1744  2018-08-26  247.000
    1745  2018-08-27  104.125
    1746  2018-08-28  149.250
数据集包含大约1700行每日数据。 我想绘制一个箱线图,以便查看每月的值。 像这样的

我需要x轴上的月份,如一月/二月/三月等

如果我有一个每日数据集,我找不到任何可以实现这一点的工作解决方案。我想我必须先做数据准备并将每月的值分组?
或者,我如何以简单快捷的方式对此进行编程?

假设您的数据框
df
包含两列“日期”和“总和”,我们需要在“日期”字段中对其进行排序,以使各行在绘图中的顺序正确,否则我们可能会以错误的顺序看到月份。然后我们需要创建一个支持列,其中包含每个日期月份的名称。就这样,我们已经准备好了

代码如下:

将熊猫作为pd导入
导入seaborn作为sns
#只是一个例子。。。
df=pd.数据帧([[“2013-08-31”,19],“2013-09-01”,37],“2013-09-02”,10.75]],列=[“日期”,“总和])
#按日期对行进行排序
df.sort_值(by=“date”,inplace=True)
#创建具有每行月份名称的支持系列
月份名称=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”]
月份=df[“日期”]。应用(lambda日期:月份名称[int(date.split(“-”[1])-1])
#策划它
sns.箱线图(月,df[“总和])

我希望它能有所帮助。

假设您的数据框
df
包含两列“日期”和“总和”,我们需要在“日期”字段中对其进行排序,以使各行按正确的顺序进行绘图,否则我们可能会以错误的顺序看到月份。然后我们需要创建一个支持列,其中包含每个日期月份的名称。就这样,我们已经准备好了

代码如下:

将熊猫作为pd导入
导入seaborn作为sns
#只是一个例子。。。
df=pd.数据帧([[“2013-08-31”,19],“2013-09-01”,37],“2013-09-02”,10.75]],列=[“日期”,“总和])
#按日期对行进行排序
df.sort_值(by=“date”,inplace=True)
#创建具有每行月份名称的支持系列
月份名称=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”]
月份=df[“日期”]。应用(lambda日期:月份名称[int(date.split(“-”[1])-1])
#策划它
sns.箱线图(月,df[“总和])
我希望它有帮助。

您可以从datetime开始使用该函数

以下是一个例子:

from datetime import date
import random
import pandas as pd
from seaborn import boxplot

dates = [date.today()]*10
dataSum = [random.randint(1,100) for x in range(10)] 

d = {'date': dates, 'sum':dataSum}
df = pd.DataFrame(data = d)

dateData =  [x.strftime('%B') for x in df['date']]
boxplot(dateData, df['sum'])

您可以从datetime开始使用该函数

以下是一个例子:

from datetime import date
import random
import pandas as pd
from seaborn import boxplot

dates = [date.today()]*10
dataSum = [random.randint(1,100) for x in range(10)] 

d = {'date': dates, 'sum':dataSum}
df = pd.DataFrame(data = d)

dateData =  [x.strftime('%B') for x in df['date']]
boxplot(dateData, df['sum'])

您可以使用
dt.strftime(“%b”)元素创建月份列,如下所示:

df=pd.DataFrame(np.random.randint(50,1000,365).reshape(-1,1),
                index=pd.date_range('2018-01-01','2018-12-31',freq='D'),
                columns=['sum'])
df.reset_index(inplace=True)
df.columns = ['Date','sum']
df.head()

          Date  sum
0   2018-01-01  984
1   2018-01-02  582
2   2018-01-03  967
3   2018-01-04  503
4   2018-01-05  330

df['month'] = df['Date'].dt.strftime('%b')

使用
seaborn.boxplot
并将
x='month'
y='sum'
data=df
作为参数传递。您将获得所需的箱线图

fig, ax = plt.subplots()
fig.set_size_inches((12,4))
sns.boxplot(x='month',y='sum',data=df,ax=ax)
plt.show()

绘图颜色和其他参数未设置为OP的显示绘图。

您可以使用
dt.strftime('%b')
元素创建月份列,如下所示:

df=pd.DataFrame(np.random.randint(50,1000,365).reshape(-1,1),
                index=pd.date_range('2018-01-01','2018-12-31',freq='D'),
                columns=['sum'])
df.reset_index(inplace=True)
df.columns = ['Date','sum']
df.head()

          Date  sum
0   2018-01-01  984
1   2018-01-02  582
2   2018-01-03  967
3   2018-01-04  503
4   2018-01-05  330

df['month'] = df['Date'].dt.strftime('%b')

使用
seaborn.boxplot
并将
x='month'
y='sum'
data=df
作为参数传递。您将获得所需的箱线图

fig, ax = plt.subplots()
fig.set_size_inches((12,4))
sns.boxplot(x='month',y='sum',data=df,ax=ax)
plt.show()
打印颜色和其他参数未设置为OP的显示打印