gpt4 book ai didi

python - 计算 pandas 数据框中每天的出现次数

转载 作者:行者123 更新时间:2023-12-01 08:35:34 26 4
gpt4 key购买 nike

我有一个数据框,其中包含 2008 年至 2018 年每一天的历史天气数据。像这样:

   Date        precipMM    Rain_Type
0 2008-07-01 0.0 No rain
1 2008-07-02 0.0 No rain
2 2008-07-03 0.0 No rain
3 2008-07-04 0.3 Light Rain
4 2008-07-05 1.1 Light Rain
...
5 2018-07-06 0.3 Light Rain
6 2018-07-07 0.3 Light Rain
7 2018-07-08 0.0 No rain
8 2018-07-09 0.0 No rain

我想在初始数据帧中获得“小雨”、“无雨”等新列以及这些值的百分比(例如 value_counts)。因此,在我的数据框中,我有 12 月 1 日(例如)的 10 个观测值,其中 8 天有“小雨”,因此数据框中每个 12 月 1 日的百分比将为 80%。我想要这样的东西:

   Date        precipMM    Rain_Type.  Light_rain_prct.  No_rain_pct
0 2008-07-01 0.0 Light_rain 80 20
0 2008-07-02 0.0 No rain 30 70
0 2008-07-03 0.0 No rain 50 50

有什么快速的方法吗?我做了同样的事情,但只进行了很多操作(groupby、pivot_table 等),但计算它需要时间,因为数据集很大。

最佳答案

print (df)
Date precipMM Rain_Type
0 2008-07-01 0.0 No rain
1 2008-07-02 0.0 No rain
2 2008-07-03 0.0 No rain
3 2008-07-01 0.3 Light Rain
4 2008-07-01 1.1 Light Rain
5 2018-07-02 0.3 Light Rain
6 2018-07-07 0.3 Light Rain
7 2018-07-01 0.0 No rain
8 2018-07-02 0.0 No rain

使用value_counts每组并通过unstack reshape ,然后 add_suffix对于新列名称:

df1 = (df.groupby('Date')['Rain_Type']
.value_counts(normalize=True)
.unstack(fill_value=0)
.add_suffix('_pct'))

另一个解决方案是使用 crosstab带参数标准化:

df1 = pd.crosstab(df['Date'], df['Rain_Type'],normalize=0).add_suffix('_pct')

最后join原文:

df2 = df.join(df1 * 100, on='Date')
print (df2)
Date precipMM Rain_Type Light Rain_pct No rain_pct
0 2008-07-01 0.0 No rain 66.666667 33.333333
1 2008-07-02 0.0 No rain 0.000000 100.000000
2 2008-07-03 0.0 No rain 0.000000 100.000000
3 2008-07-01 0.3 Light Rain 66.666667 33.333333
4 2008-07-01 1.1 Light Rain 66.666667 33.333333
5 2018-07-02 0.3 Light Rain 50.000000 50.000000
6 2018-07-07 0.3 Light Rain 100.000000 0.000000
7 2018-07-01 0.0 No rain 0.000000 100.000000
8 2018-07-02 0.0 No rain 50.000000 50.000000

关于python - 计算 pandas 数据框中每天的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53740293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com