问题:数据分组后找不到生成的新dataframe,无法进行下一步的计算与统计。
测试代码:
import pandas as pd
data=pd.read_csv('心脏病数据.csv')
gp=data.groupby('age')#按age分组
age=[]
ct=[]
ct=0
for i in gp:
print('=============={}==========='.format(ct))
ct+=1
print(i)
ct1=0
for j in i:
print('第{}个元素:'.format(ct1),j,type(j))
ct1+=1
'''经过测验得知,groupby生成元组构成的迭代器,每个元组由两个元素组成,第一个元素为分组依据,第二个元素为分组后的dataframe'''
部分结果展示:
==============0===========
(29.0, age sex cp trestbps chol ... oldpeak slope ca thal target
131 29.0 1.0 2.0 130.0 204.0 ... 0.0 1.0 0.0 3.0 0
[1 rows x 14 columns])
第0个元素: 29.0 <class 'float'>
第1个元素: age sex cp trestbps chol ... oldpeak slope ca thal target
131 29.0 1.0 2.0 130.0 204.0 ... 0.0 1.0 0.0 3.0 0
[1 rows x 14 columns] <class 'pandas.core.frame.DataFrame'>
==============1===========
(34.0, age sex cp trestbps chol ... oldpeak slope ca thal target
100 34.0 1.0 1.0 118.0 182.0 ... 0.0 1.0 0.0 3.0 0
224 34.0 0.0 2.0 118.0 210.0 ... 0.7 1.0 0.0 3.0 0
[2 rows x 14 columns])
第0个元素: 34.0 <class 'float'>
第1个元素: age sex cp trestbps chol ... oldpeak slope ca thal target
100 34.0 1.0 1.0 118.0 182.0 ... 0.0 1.0 0.0 3.0 0
224 34.0 0.0 2.0 118.0 210.0 ... 0.7 1.0 0.0 3.0 0
[2 rows x 14 columns] <class 'pandas.core.frame.DataFrame'>
结论:
在这里<class 'pandas.core.frame.DataFrame'>是迭代器中每个元组的第二个元素,因此对分组后的数据再次进行处理时,需要迭代展开迭代器,然后取出其中的第二个元素。