转载自云栖社区《高手如何做数据分析?这11招是你应该具备的技能》
https://yq.aliyun.com/articles/601474?utm_content=m_1000001140
import pandas as pd
import numpy as np
file = 'D:/my_project/Titanic_disaster/train.csv'
df = pd.read_csv(file)
# 1. 数据集的字符处理
# 第一招:对列的处理
df.rename(columns={'Survived': '是否获救', 'Name': '姓名', 'Pclass': '船舱等级', 'Sex': '性别', 'Age': '年龄', 'SibSp': '兄弟姐妹数',
'Parch': '父母小孩数', 'Ticket': '船票', 'Fare': '船票费'})
# 第二招:对数据集里面特定字符串进行替换
df['性别'].mpa({'female':'女','male':'男'})
# 第三招:对列的字符进行替换
df['船票'] = df['船票'].str.replace(r'[^d+]','')
print(df.head(3))
# 2. 数据集的过滤
# 第四招:用逻辑表达式组合过滤
df[(df['性别']=='女') & (df['年龄']<=10)] #提取性别是女孩且年龄在10岁以下的
# 第五招:巧用不等式
df[(df['是否获救']==1) & (df['船舱等级']!=3)] #提取非3等舱,且获救乘客信息
# 第六招:也可以用query函数
df.query('船舱等级==[1,2]')
# 3.数据的分类
# 第七招:用where函数
df['是否成年'] = np.where(df['年龄']>=18, '成年','未成年')
# 第八招:用万能的apply函数
def convert_age(age):
if age>0 and age<=10:
return '小孩'
elif age<=18:
return '青年'
elif age<=50:
return '成人'
else:
return '老人'
df['年龄分类'] = df['年龄'].apply(convert_age)
# 4.数据的切片和透视表
# 第九招:神奇的groupby函数
df.groupby('性别')['是否获救'].count()
# 第十招:对数据进行轴切片分析
df.groupby(['是否获救','船舱等级'])['年龄'].agg(['size','max','min','mean'])
# 第十一招:数据透视表
df.pivot_table(columns=['性别'],index=['是否获救','船舱等级'],values='年龄',aggfunc={'年龄':[np.mean,min,max]})