本笔记摘录清华大学工业工程系朱成礼老师的python教案与授课内容,并在此基础上进行实操性的拓展,希望能对大家有所帮助。
一、数据分析简介
数据分析的一般流程:需求分析——>获取数据——>数据预处理——>分析与建模——>评价与优化——>部署
二、数据分析实例
1、数据集情况简介
2、数据预处理(清洗)
2.1 数据探索分析
快速了解数据全貌,发现数据特征
编号、类名、非空数的数量、数据类型
import pandas as pd
# 加载csv数据集,指定第一列为索引
iris_data = pd.read_csv('data/Iris_0625.csv)
iris_data.info() # 查看数据集信息
# 显示前5行数据
print(iris_data.head())
# 描述性统计信息
print(iris_data.describe())
2.2 重复行分析与处理
输出重复行标记,若要查看重复行,则print(a[df......])
id一样,标记为重复;定义某一列,若该列重复则就算重复(用subject指定)。keep=‘first'表示第一个不标记为重复,后面的算重复
inplace = True在原来DataFrame上做操作;False生成DataFrame副本
2.3缺失值分析与处理
缺失值的处理方法:
• 删除含有缺失值的记录
• 数据补齐(就近补齐、均值补齐、利用同类均值补齐、拟合补齐)
• 不处理
2.3.1 缺失值检测
2.3.2 使用describe检测缺失值
count列表示非空的数字个数
2.3.3 使用fillna()填充缺失值
df.fillna(value=None, method=None, axis=None)
# method:{‘ffill’用前面的值填充, ‘bfill’用后面的值填充, None用value去填充}
df1 = df.fillna('missing')
df2 = df.fillna(method='ffill')
values = {'A': 0, 'B': 1, 'C': 2, 'D': 3}
# A,B,C,D指列的名字
df3 = df.fillna(value=values, limit=1)
2.3.4 用dropna()删除
df.dropna(axis=0, how='any', thresh=None)
df1 = df.dropna() # 删除含有缺失值的行
df2 = df.dropna(how='all') # 删除全为缺失值的行
df3 = df.dropna(thresh=2) # 删除至少含有2个缺失值的行
2.3.5 使用同类均值填补缺失值
df_data = pd.read_csv('data/iris_deldup.csv',
index_col=[0])
# 按类别分组
iris_group = df_data.groupby(‘Species’)
# 用类别均值填充缺失值
for x in iris_group: # 对每一个组都进行同样的操作
values = x[1].mean().to_dict() # 以列为key,以均值为value生成字典
x[1].fillna(value=values, inplace=True)
df_data.update(x[1])
# 填充后的数据保存至硬盘
df_data_fillna.to_csv('data/iris_fillna.csv')
2.4 异常值分析与处理.
2.4