DW-hands-on-data-analysis chapter 2

一、数据分析之数据清洗及特征处理

目的:将数据清洗成可以分析或建模的样子

1.缺失值

1.1各列缺失值个数

df['column'].isna.sum( ); df['column'].isnull.sum( );

1.2 缺失值的处理

  • 去掉含有缺失值的行(样本)、列(特征向量)
  • 将缺失值用某些值填充(0,平均值,中值等)

借鉴:pandas 处理缺失值[dropna、drop、fillna]_墨氲的博客-CSDN博客_pandas删除缺失值面对缺失值三种处理方法:option 1: 去掉含有缺失值的样本(行)option 2:将含有缺失值的列(特征向量)去掉option 3:将缺失值用某些值填充(0,平均值,中值等)对于dropna和fillna,dataframe和series都有,在这主要讲datafame的对于option1:使用DataFrame.dropna(axis=0, how='any', thres...https://blog.csdn.net/dss_dssssd/article/details/82814673

检索缺失值并用0代替:

df[df['Age']==None]=0
df[df['Age'].isnull()] = 0 # 还好
df[df['Age'] == np.nan] = 0

这三个效果有效性不一,当空缺值的数据类型为float64所以用None一般索引不到,比较的时候最好用np.nan。

2.重复值

2.1查看重复值

df.duplicated('column1','column2'):对于每一组重复的值,第一次出现的值设置为False,其他所有值设置为True ;df.duplicated( )默认所有列

df[df.duplicated('Age')]:返回df.duplicated('Age')为True(Age列为开始重复的行)的行的所有值

2.2 删除重复项

drop_duplicate方法是对DataFrame格式的数据,去除特定列下面的重复行。

借鉴:Pandas之drop_duplicates:去除重复项_OraYang的博客-CSDN博客_df.drop_duplicates方法DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)参数这个drop_duplicate方法是对DataFrame格式的数据,去除特定列下面的重复行。返回DataFrame格式的数据。 subset : column label or sequence of labels, optional 用来指https://blog.csdn.net/u010665216/article/details/78559091

3.特征观察与处理

3.1 对连续性数值型数据(特征)进行分箱

分箱就是把数据按特定的规则进行分组,实现数据的离散化,增强数据稳定性,减少过拟合风险

 pd.cut( )参数说明:

借鉴:pandas.cut使用总结 - ColdCode - 博客园用途 用来把一组数据分割成离散的区间。比如有一组年龄数据,可以使用 将年龄数据分割成不同的年龄段并打上标签。 原型 参数含义 :被切分的类数组(array like)数据,必须是1维的(不能用Datahttps://www.cnblogs.com/sench/p/10128216.htmlpandas.cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates='raise') #0.23.4

3.2 将文本型数据(特征)转换成数值型数据

3.2.1 查看文本类列有哪些值

  • df['Sex'].value_counts( ) #返回各个值的数量
  • df['Sex'].unique() #返回各个取值
  • df['Sex'].nunique() #返回该列取值的数量

3.2.2 将文本转换为数值

  • replace( )函数:df['Sex_num'] = df['Sex'].replace(['male','female'],[1,2])
  • map( )函数:df['Sex_num'] = df['Sex'].map({'male': 1, 'female': 2})

二、数据重构

1.DataFrame表的列/行合并:

1.1 concat( ):

list_up = [text_left_up,text_right_up]
result_up = pd.concat(list_up,axis=1)# c,axis=0表示横向(行)合并

1.2 DataFrame自带的方法join( )和append( ):

join( )纵向(列)合并:resul_up = text_left_up.join(text_right_up)

append( )横向(行)合并:result = result_up.append(result_down)

1.3 merge( )函数【待研究】

【python】详解pandas库的pd.merge函数_brucewong0516的博客-CSDN博客_merge函数pandas.DataFrame.mergepd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indi...https://blog.csdn.net/brucewong0516/article/details/82707492

2. 转换数据表的行列

stack( ):将数据的列“旋转”为行

unstack( ):将数据的行“旋转”为列

3. 数据聚合与运算——计算一些指标

例子:(图源水印)Pandas教程 | 超好用的Groupby用法详解 - 知乎

 rroupby函数后得到的是DataFrameGroupBy类型数据:

In [17]: data.groupby('company').agg({'salary':'median','age':'mean'})
Out[17]:
         salary    age
company
A          21.5  27.50
B          10.0  29.00
C          30.0  27.2

三、数据可视化

Python数据可视化库Matplotlib:import matplotlib.pyplot as plt

DataFrame.plot.bar( )或DataFrame.plot(kind='bar')以矩形条形式垂直绘制图形https://segmentfault.com/a/1190000040303178icon-default.png?t=M276https://segmentfault.com/a/1190000040303178plt.title( )函数用于设置图像标题

plt.show( )具体作用待查,初步看就是为了图像合规展示

折线图:kind='kde'; plt.figure??

库seaborn待查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值