python - 熊猫一周中每一天的平均行数
问题描述
为了获得工作日的总和/行数,我执行以下操作:
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
下面的答案是正确的。
解决方案
假设您只想要天数:
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']
推荐阅读
- java - 我这样写,但仍然收到错误“与 XXX 的连接被泄露。你忘记关闭响应正文了吗?”
- java - 实时更新活动提要 UI (getstream.io/stream-java)
- c++ - C++ 从 Internet 获取 localtime/gmtime 以获得许可
- java - Java 打印/保留错误中的大浮点数和双精度数。这种行为是由于有效数字的数量造成的吗?
- regex - 使用 VBA 从字符串中删除文本
- c# - 如何使用 Mailkit 读取电子邮件正文中的内联图像
- react-native - 如何检查经纬度值在 MapView 区域中
- drupal - Drupal 8 删除布局前缀
- mongodb - Spring MonogoDB 健康检查实际上检查了什么
- javascript - 预计在反应中箭头函数的末尾返回一个值