# 查看df的总体情况
df.info()# 查看每列的缺失值个数
df.isnull().sum()# 对缺失值进行处理
# 1. 如将age年龄列的缺失值进行填充0
df[df['Age'] == None] = 0
df[df['Age'].isnull()] = 0
df[df['Age'] == np.nan] = 0# 2. 直接除去缺失值
df.dropna()
df.fillna(0) # 对缺失值填充0
如果某个方法无法找到缺失值:数值列读取数据后,空缺值的数据类型为float64所以用None一般索引不到,比较的时候最好用np.nan。
# 查看重复行
df[df.duplicated()]# 除去重复行
df = df.drop_duplicates()
原数据有两大类特征:
#将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'], 5,labels = [1,2,3,4,5])#将连续变量Age划分为(0,5] (5,15] (15,30] (30,50] (50,80]五个年龄段,并分别用类别变量12345表示
df['AgeBand'] = pd.cut(df['Age'],[0,5,15,30,50,80],labels = [1,2,3,4,5])#将连续变量Age按10% 30% 50 70% 90%五个年龄段,并用分类变量12345表示
df['AgeBand'] = pd.qcut(df['Age'],[0,0.1,0.3,0.5,0.7,0.9],labels = [1,2,3,4,5])
查看文本变量种类:
# 1. 查看文本变量种类(两种方法)
df['Sex'].value_counts()
df['Sex'].unique() # array(['male', 'female', 0], dtype=object)
df['Sex'].nunique() # 3
对文本变量进行编码的三种方式:
# 方法一: replace(将类别文本转换为12345)
df['Sex_num'] = df['Sex'].replace(['male','female'],[1,2])# 方法二: map
df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})# 方法三: 使用sklearn.preprocessing的LabelEncoder
from sklearn.preprocessing import LabelEncoder
for feat in ['Cabin', 'Ticket']:lbl = LabelEncoder() label_dict = dict(zip(df[feat].unique(), range(df[feat].nunique())))df[feat + "_labelEncode"] = df[feat].map(label_dict)df[feat + "_labelEncode"] = lbl.fit_transform(df[feat].astype(str))# 方法四: onehotEncoder
for feat in ["Age", "Embarked"]:
# x = pd.get_dummies(df["Age"] // 6)
# x = pd.get_dummies(pd.cut(df['Age'],5))x = pd.get_dummies(df[feat], prefix=feat)df = pd.concat([df, x], axis=1)#df[feat] = pd.get_dummies(df[feat], prefix=feat)
(所谓的Titles就是Mr,Miss,Mrs等)
df['Title'] = df.Name.str.extract('([A-Za-z]+)\.', expand=False)
| 任务 | 任务内容 | 时间 | 完成情况 |
|---|---|---|---|
| - | 1月16日周一开始 | ||
| Task01: | 数据加载及探索性数据分析(第一章第1,2,3节)(2天) | 16-17日周二 | 完成 |
| Task02: | 数据清洗及特征处理(第二章第1节)(2天) | 18-19日周四 | 完成 |
| Task03: | 数据重构(第二章第2,3节)(2天) | 20-21日周六 | |
| Task04: | 数据可视化(第二章第4节)(2天) | 22-23日周一 | |
| Task05: | 数据建模及模型评估(第三章第1,2节)(3天) | 24-26日周四 |
[1] https://github.com/datawhalechina/hands-on-data-analysis
[2] pandas常用操作详解——pandas的去重操作df.duplicated()与df.drop_duplicates()
[3] https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.qcut.html