数据分析主要掌握的几个库:
numpy, pandas, seaborn, matplotlib
数据分析流程
1.查看数据
常用函数:
df.head()
df.info()
df.describe()
通过这几个函数初步了解数据长什么样、有无缺失值、基本的统计信息等
2.处理缺失数据
常用函数:
df.isna() #查看数据是否有缺失值
df.isnull() #查看数据空值
df.duplicated() #查看重复数据
df.fillna() #对数据缺失值填充
注意:
(1)df.fillna()函数可以指定填充某一列的缺失值
df['col_name'].fillna(values, inplace = True)
(2)填充的value带有索引,需要对原数据设置对应index
填充完后reset_index()
titanic_df.set_index('Sex', inplace=True)
titanic_df
# 使用fillna填充缺失值,根据索引值填充
titanic_df.Age.fillna(age_median2, inplace=True)
# 重置索引,即取消Sex索引
titanic_df.reset_index(inplace=True)
3.数据变换、分组聚合
常用函数:
df.groupby(by = , sort=True).agg(func)
df.groupby(by = , sort=True).func
df.groupby(by = , sort=True)[‘col_names’].agg(func)
df.groupby(by = , sort=True)[‘col_names’].func
df.sort_index() #按照索引排序
df.sort_values() #按照值排序
注意:sort_values()可以同时对指定的多列数据进行排序
titanic_df.sort_values(by = ['Pclass', 'Age'], ascending=[True, False],inplace=True)
4.数据可视化
(1)pandas自带的可视化函数
df.plot(kind= )
kind: ‘box’ #箱线图
‘line’ # 折线图
‘pie’ # 饼图
‘bar’ #柱状图
‘hist’ #直方图
(2) seaborns
常用绘图函数:
# 散点图,分析两个变量的关系
sns.lmplot(x="total_bill", y="tip", data=tips) #+拟合
sns.jointplot(x="x", y="y", data=df)
#柱状图,hue指定分类类名
sns.barplot(x="sex", y="survived", hue="class", data=titanic)
#分类箱线图
sns.boxplot(x="day", y="total_bill", hue="time", data=tips)
#灰度图
sns.distplot(x, kde=True, bins=20) #bins控制分桶数目
#提琴图,是箱线图 + KDE(密度分布)
sns.violinplot(x="total_bill", y="day", hue="time", data=tips)
#对应pandas中的value_counts
sns.countplot(x="deck", data=titanic)
#点图
sns.pointplot(x="sex", y="survived", hue="class", data=titanic)
#分类子图,x 和 y 可指定多组数据
sns.factorplot(x="day", y="total_bill", hue="smoker", col="time", data=tips, kind="swarm")
#描绘数据的两两之间的关系
sns.pairplot(iris);
重点:
多分类绘图函数:
sns.FacetGrid()
如
sns.FacetGrid(data = titanic_df, row='Embarked', col='Sex',aspect=1.5) \
.map(sns.pointplot, 'Pclass', 'Survived', 'Sex', hue_order=['male', 'female'], palette='deep', ci=None)
row, col, hue : strings
定义数据子集的变量,这些变量将在网格的不同方面绘制
map(func,* args,** kwargs)
将绘图功能应用于每个方面的数据子集
{row,col,hue}_order : lists, optional
对所给命令的级别进行排序。默认情况下,这将是数据中显示的级别,如果变量是pandas分类,则是类别顺序。
补充:
1.pivot_table函数
透视表,起作用于Groupby + agg 相当
titanic_df.pivot_table(values='Survived',index='AgeBand', columns=['Sex', 'Pclass'], aggfunc=np.mean)