我首先以dry bean数据集作为本次的尝试Excel
可以看到,该数据集有16个属性和一个标签,而标签总共有分为7种,分别为: SEKER,BARBUNYA,
BOMBAY,CALI, HOROZ,SIRA,DERMASON0,我想计算一下这七个品种的每个属性的平均值,我使用pandas实现并且把它们保存到Excel表格:
平均值使用pandas自带计算平均值的函数xx.mean()
第一次使用的是lambda完成的
import pandas as pd
readbook = pd.read_excel('Dry_Bean.xlsx', engine='openpyxl')
SEKER = readbook.loc[readbook['Class'].apply(lambda a: a == 'SEKER')]
BARBUNYA = readbook.loc[readbook['Class'].apply(lambda a: a == 'BARBUNYA')]
BOMBAY = readbook.loc[readbook['Class'].apply(lambda a: a == 'BOMBAY')]
CALI = readbook.loc[readbook['Class'].apply(lambda a: a == 'CALI')]
HOROZ = readbook.loc[readbook['Class'].apply(lambda a: a == 'HOROZ')]
SIRA = readbook.loc[readbook['Class'].apply(lambda a: a == 'SIRA')]
DERMASON = readbook.loc[readbook['Class'].apply(lambda a: a == 'DERMASON')]
SEKER0 = SEKER.mean().to_numpy()
BARBUNYA0 = BARBUNYA.mean().to_numpy()
BOMBAY0 = BOMBAY.mean().to_numpy()
CALI0 = CALI.mean().to_numpy()
HOROZ0 = HOROZ.mean().to_numpy()
SIRA0 = SIRA.mean().to_numpy()
DERMASON0 = readbook.mean().to_numpy()
means = pd.DataFrame({
'特征': ['Area', 'Perimeter', 'MajorAxisLength', 'MinorAxisLength', 'AspectRation', 'Eccentricity', 'ConvexArea',
'EquivDiameter',
'Extent', 'Solidity', 'roundness', 'Compactness', 'ShapeFactor1', 'ShapeFactor2', 'ShapeFactor3',
'ShapeFactor4'],
'SEKER0': SEKER0,
'BARBUNYA0': BARBUNYA0,
"BOMBAY0": BOMBAY0,
'CALI0': CALI0,
'HOROZ0': HOROZ0,
'SIRA0': SIRA0,
'DERMASON0': DERMASON0,
})
means.to_excel('dry Bean的平均值.xlsx', index=None)
print('ok')
看一下保存的dry Bean的平均值.xlsx
后来发现可以使用官方提供的一种方法:
SEKER = readbook[readbook['Class'] == 'SEKER']
可以代替:
SEKER = readbook.loc[readbook['Class'].apply(lambda a: a == 'SEKER')]



