首页 > 解决方案 > 日期频率的箱须图

问题描述

大家早上好!我有一个 Pandas df,我试图创建一个包含 30 年数据的每月盒子和胡须。 数据框

         datetime   year   month day  hour  lon      lat
0  3/18/1986 10:17  1986      3   18    10 -124.835  46.540
1   6/7/1986 13:38  1986      6    7    13 -121.669  46.376
2  7/17/1986 20:56  1986      7   17    20 -122.436  48.044
3   7/26/1986 2:46  1986      7   26     2 -123.071  48.731
4   8/2/1986 19:54  1986      8    2    19 -123.654  48.480

试图查看 X 个月的平均出现次数、中位数和最大/最小出现次数(以及最大和最小日期)..

我一直在玩 pandas.DataFrame.groupby() 但并不完全理解它。

我按月份和日期对日期进行了分组。我喜欢这种格式:代码:

   df = pd.read_csv(masterCSVPath)
   months = df['month']

   test = df.groupby(['month','day'])['day'].count()
   output: ---->
month   day
   1      1       50
          2      103
          3       97
          4       29
          5       60
         ...
   12     27      24
          28       7
          29      17
          30      18
          31       9

那么我怎样才能把上面的df变成一个盒子/晶须图呢?我想要的 x 轴是几个月.. y 轴 == 出现次数

标签: python-3.xpandasstatistics

解决方案


试试这个(不做 groupby):

import matplotlib.pyplot as plt
import seaborn as sns
sns.boxplot(x = 'month', y = 'day', data = df)

如果您希望月份为一月、二月格式,请尝试以下操作:

import matplotlib.pyplot as plt
import seaborn as sns
import datetime as dt
df['month_new'] = df['datetime'].dt.strftime('%b')
sns.boxplot(x = 'month_new', y = 'day', data = df)

推荐阅读