分别计算样本中每个元素的方差
Calculate the variance for each element in the sample separately
我有 DF,有景点名称、日期和乘车金额。
import pandas as pd
attr = pd.DataFrame(
{'rides':['circuit','circuit',
'roller coaster', 'roller coaster',
'car', 'car', 'car',
'train', 'train'],
'date':['2019-06-22', '2019-06-23',
'2019-06-29', '2019-07-06',
'2019-09-01', '2019-09-07', '2019-09-08',
'2019-09-14', '2019-09-15'],
'ride_sum':[663, 483,
858, 602,
326, 2, 86,
70, 134]})
rides date ride_sum
0 circuit 2019-06-22 663
1 circuit 2019-06-23 483
2 roller coaster 2019-06-29 858
3 roller coaster 2019-07-06 602
4 car 2019-09-01 326
5 car 2019-09-07 2
6 car 2019-09-08 86
7 train 2019-09-14 70
8 train 2019-09-15 134
我可以手动计算,但我的数据框有 1000 多条线和 30 多个不同的游乐设施。
在示例中,它看起来像这样
print(attr.loc[attr['rides'] == 'circuit']['ride_sum'].var(),
attr.loc[attr['rides'] == 'roller coaster']['ride_sum'].var(),
attr.loc[attr['rides'] == 'car']['ride_sum'].var(),
attr.loc[attr['rides'] == 'train']['ride_sum'].var())
16200.0 32768.0 28272.0 2048.0
我想获得一个数据框,每次骑行都有差异,如下所示
rides var
0 circuit 16200.0
1 roller coaster 32768.0
2 car 28272.0
3 train 2048.0
像这样尝试 groupby
和 var()
:
attr.groupby("rides").var().reset_index()
rides ride_sum
0 car 28272
1 circuit 16200
2 roller coaster 32768
3 train 2048
(reset_index()
不一定需要)
这样做:
attr.groupby(attr.rides).agg(["var"]).reset_index()
编辑:
峰态没有聚合。您需要这样做:
attr.groupby(attr.rides).apply(pd.DataFrame.kurt).reset_index()
对于您的示例,每组的值少于三个,因此它将 return NaN
。
使用pandas中的独特功能来乘坐独特的游乐设施并应用循环来乘坐var
示例:
unique_rides = unique(attr['rides'])
for ride in unque_rides:
print(attr.loc[attr['rides'] == ride]['ride_sum'].var())
谢谢
我有 DF,有景点名称、日期和乘车金额。
import pandas as pd
attr = pd.DataFrame(
{'rides':['circuit','circuit',
'roller coaster', 'roller coaster',
'car', 'car', 'car',
'train', 'train'],
'date':['2019-06-22', '2019-06-23',
'2019-06-29', '2019-07-06',
'2019-09-01', '2019-09-07', '2019-09-08',
'2019-09-14', '2019-09-15'],
'ride_sum':[663, 483,
858, 602,
326, 2, 86,
70, 134]})
rides date ride_sum
0 circuit 2019-06-22 663
1 circuit 2019-06-23 483
2 roller coaster 2019-06-29 858
3 roller coaster 2019-07-06 602
4 car 2019-09-01 326
5 car 2019-09-07 2
6 car 2019-09-08 86
7 train 2019-09-14 70
8 train 2019-09-15 134
我可以手动计算,但我的数据框有 1000 多条线和 30 多个不同的游乐设施。
在示例中,它看起来像这样
print(attr.loc[attr['rides'] == 'circuit']['ride_sum'].var(),
attr.loc[attr['rides'] == 'roller coaster']['ride_sum'].var(),
attr.loc[attr['rides'] == 'car']['ride_sum'].var(),
attr.loc[attr['rides'] == 'train']['ride_sum'].var())
16200.0 32768.0 28272.0 2048.0
我想获得一个数据框,每次骑行都有差异,如下所示
rides var
0 circuit 16200.0
1 roller coaster 32768.0
2 car 28272.0
3 train 2048.0
像这样尝试 groupby
和 var()
:
attr.groupby("rides").var().reset_index()
rides ride_sum
0 car 28272
1 circuit 16200
2 roller coaster 32768
3 train 2048
(reset_index()
不一定需要)
这样做:
attr.groupby(attr.rides).agg(["var"]).reset_index()
编辑:
峰态没有聚合。您需要这样做:
attr.groupby(attr.rides).apply(pd.DataFrame.kurt).reset_index()
对于您的示例,每组的值少于三个,因此它将 return NaN
。
使用pandas中的独特功能来乘坐独特的游乐设施并应用循环来乘坐var 示例:
unique_rides = unique(attr['rides'])
for ride in unque_rides:
print(attr.loc[attr['rides'] == ride]['ride_sum'].var())
谢谢