数据分析 五日
panadas与matplotlib
1 pandas缺失值处理
数据处理的过程中,遇到NaN类型的缺失数据,如果缺失数据占总数据的数量较小,可以进行删除操作,如果数量较大,必须对数据进行填充
首先要检查数据是否缺失,随后判断是否可以删除,对不可删除数据进行合理的填充
1 导入数据
data05 = pd.read_excel(r'data_test05.xlsx')
2 判断是否缺失
data05.isnull() # 统计每个数据项是否有缺失
data05.isnull().any(axis = 0) # 统计列字段下是否含有缺失
3 计算各列数据的缺失比例,判断是否可以删除
ata05.isnull().sum(axis = 0)/data05.shape[0]
data05.dropna() # 可以删除
4 不可删除就应该对数据进行合理的填充
data05.gender.mode()[0]
# 众数:可以有一个也可能是多个 mode()[0]
data05.age.mean()
# 平均值 mean()
data05.income.median()
# 中位数 median()
2 数据的汇总
pd.pivot_table(
data, # 指定需要构造透视表的数据集
values=None, # 指定需要拉入“数值”框的字段列表
index=None, # 指定需要拉入“行标签”框的字段列表
columns=None, # 指定需要拉入“列标签”框的字段列表
aggfunc='mean',
# 指定数值的统计函数,默认为统计均值,也可以指定numpy模块中的其他统计函数
fill_value=None, # 指定一个标量,用于填充缺失值
margins=False,
# 类型参数,是否需要显示行或列的总计值,默认为False
dropna=True,
类型参数,是否需要删除整列为缺失的字段,默认为True
margins_name='All' # 指定行或列的总计名称,默认为All
)
3 数据的分组与聚合
3.1 分组 方法 groupby
grouped = data06.groupby(by = ['color','cut'])
3.2 分组后的聚合统计 必须使用的关键字 aggregate
result = grouped.aggregate({
'color':np.size,
'carat':np.min,
'price':np.mean,
'table':np.max})
3.3 调整变量名的顺序
result = pd.DataFrame(result, columns=['color','carat','price','table'])
3.4 数据集重命名
result.rename(columns={'color':'counts', # 修改名称
'carat':'min_weight', # 修改名称
'price':'avg_price', # 修改名称
'table':'max_table'}, # 修改名称
inplace=True) # 确认修改
3.5 数据的处理
drop方法 删除数据 drop(要删除的行列,inplace=Ture #确认修改)
sort_values( ) 不写默认升序,参数sort_values(ascending=False)倒序
4 数据的合并
pd.concat(
objs, # 指定需要合并的对象,可以是序列、数据框或面板数据构成的列表
axis=0, # 指定数据合并的轴,默认为0,表示合并多个数据的行,如果为1,就表示合并多个数据的列
join='outer', # 指定合并的方式,默认为outer,表示合并所有数据,如果改为inner,表示合并公共部分的数据
join_axes=None, # 合并数据后,指定保留的数据轴
ignore_index=False, # bool类型的参数,表示是否忽略原数据集的索引,默认为False,如果设为True,就表示忽略原索引并生成新索引
keys=None) # 为合并后的数据添加新索引,用于区分各个数据部分
5 数据的连接
pd.merge(
left, right, # left指定需要连接的主 right:指定需要连接的辅表
how='inner', # 指定连接方式,默认为inner内连,还有其他选项,如左连left、右连right和外连outer on:指定连接两张表的共同字段
on=None, # on:指定连接两张表的共同字段
left_on=None, # left_on:指定主表中需要连接的共同字段
right_on=None, # right_on:指定辅表中需要连接的共同字段
left_index=False,
# bool类型参数,是否将主表中的行索引用作表连接的共同字段
right_index=False,
# bool类型参数,是否将辅表中的行索引用作表连接的共同字段
sort=False,
# bool类型参数,是否对连接后的数据按照共同字段排序,默认为False
suffixes=('_x', '_y')) # 如果数据连接的结果中存在重叠的变量名,则使用各自的前缀进行区分
6 matplotlib
6.1 饼图
饼图的作用
饼图属于最传统的统计图形之一,几乎随处可见,例如大型公司的屏幕墙、各种年度论坛的演示稿以及各大媒体发布的数据统计报告等;
饼图是将一个圆分割成不同大小的楔(扇)形,而圆中的每一个楔形代表了不同的类别值,通常根据楔形的面积大小来判断类别值的差异;
pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6, labeldistance=1.1)
x:指定绘图的数据
explode:指定饼图某些部分的突出显示,即呈现爆炸式
labels:为饼图添加标签说明,类似于图例说明
colors:指定饼图的填充色
autopct:自动添加百分比显示,可以采用格式化的方法显示
pctdistance:设置百分比标签与圆心的距离
labeldistance:设置各扇形标签(图例)与圆心的距离
6.2 条形图
条形图作用
虽然饼图可以很好地表达离散型变量在各水平上的差异,但其不擅长对比差异不大或水平值过多的离散型变量,因为饼图是通过各扇形面积的大小来比价差异的,面积的比较有时并不直观;
对于条形图而言,对比的是柱形的高低,柱体越高,代表的数值越大,反之亦然;
bar(x, height, width=0.8, bottom=None, color=None, edgecolor=None, tick_label=None, label = None, ecolor=None)
x:传递数值序列,指定条形图中x轴上的刻度值
height:传递数值序列,指定条形图y轴上的高度
width:指定条形图的宽度,默认为0.8
bottom:用于绘制堆叠条形图
color:指定条形图的填充色
edgecolor:指定条形图的边框色
tick_label:指定条形图的刻度标签
label:指定条形图的标签,一般用以添加图例