首页 > 解决方案 > 熊猫一周中每一天的平均行数

问题描述

为了获得工作日的总和/行数,我执行以下操作:

df['day'] = pandas.to_datetime(df['datetime']).dt.day_name()
print(pandas.value_counts(df.day))

但是,例如,如果数据框中的星期五多于星期一,我如何获得每个工作日的平均行数?或者以不同的方式问:我如何将每个计数除以该工作日发生的数量?

澄清:例如有 5 个 Mo,tue,wen,thurs 但 4 fri,sat,sun () 我想将 Mo,tue,wen,thurs 的计数除以 5 和 fri,sat 的计数,太阳 () 由 4

下面的答案是正确的。

标签: pythonpython-3.xpandas

解决方案


假设您只想要天数:

 num_days = df['day'].value_counts()

如果您想要数据集中天数的百分比。

 df['day'].value_counts(normalize=True)

更进一步,看起来您想要数据集中的天数与可能的天数。

 # Create series for days in your dataframe
 days_in_df = df['day'].value_counts()

 # Create a dataframe with all days
 start = '01/01/2019'
 end = '01/31/2019'
 all_days_df = pd.DataFrame(data={'datetime':pd.date_range(start='01/01/2019',periods=31,freq='d')})
 all_days_df['all_days'] = all_days_df['datetime'].dt.day_name()

 # Use that for value counts
 all_days_count = all_days_df['all_days'].value_counts()

 # We now merge them
 result = pd.concat([all_days_count,days_in_df],axis=1,sort=True)

 # Finnaly we can get the ration
 result['day']/result['all_days']

推荐阅读