欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python数据清洗--数据表操作

程序员文章站 2022-04-28 18:30:34
...

代码示例参照此文章
https://blog.csdn.net/qiuqiu1027/article/details/104928980

1. 数据常用筛选方法

• 在数据中,选择需要的行或者列
• 基础索引方式,就是直接引用
• ioc[行索引名称或者条件,列索引名称或者标签]
• iloc[行索引位置,列索引位置]
• 注意, 区分loc和iloc

basic[['户主姓名','农户生产经营类型']]
basic.loc[0:2,['户主姓名', '户主身份证号']] order.iloc[:,[0,2]]
basic.loc[basic['健康状况']== '良好',['户主姓名', '户主身份证号','健康状况']]
basic.iloc[3,[1,2]]

2. 数据增加和删除

• 在数据中,直接添加列
• 使用df.insert方法在数据中添加一列
• 掌握drop(labels,axis,inplace=True) 的用法
• labels表示删除的数据, axis表示作用轴,inplace=True表示是否对原数据生效
• axis=0按行操作, axis=1按列操作
• 使用del函数直接删除其中一列

del basic['数据']
basic.drop(labels = ['敬老爱幼情况', '家庭和睦情况'],axis = 1,inplace=True)
basic.drop(labels= range(6,11),axis=0,inplace=True)
basic.insert(0, '出生年月', mid)

python数据清洗--数据表操作
axis=0是跨行, axis=1 是跨列
• axis=0: 0值表示沿着行的方向或行标签、索引值向下执行方:
• axis=1: 1值表示沿着列的方向或列标签值执行对应方法
可以看到当axis=0时,遍历的是每行,或者说保持列标签不变,对行进行操作,同样的当axis=1时,遍历的是每列,所以当我们求每列的均值时,应该是遍历每行加总求均值

3. 数据修改和查找

• 在数据中, 可以使用rename修改列名称或者行索引名称
• 使用loc方法修改数据
• 使用loc方法查找符合条件的数据
• 条件与条件之间用&或者|连接,分别代表‘且’和‘或’
• 使用between和isin选择满足条件的行

basic[['户主身份证号','性别']][(basic.健康状况== '良好') & (basic['农户家庭人数'] >3)]
basic[['户主身份证号','性别','婚姻状况']][ basic['农户家庭人数'].between(4,10,inclusive=True)]
basic.loc[basic['是否加入农民合作社']== '未知', '是否加入农民合作社'] = '否‘
basic.rename(columns = {'出生年月':'出生日期','文化程度':'受教育水平' },inplace = True)
basic.rename(index = {1:'one','10':'ten' },inplace = True)

4. 数据整理

• 在数据清洗过程中,很多时候需要将不用的数据整理在一起,方便后续的分析,这个过程也叫数据合并合并方法
• 常见的合并方法有堆叠和按主键进行合并,堆叠又分为横向堆叠和纵向堆叠,按主键合并类似于sql里面的关联操作
• 横向堆叠将两张表或多张表在X轴方向,即横向拼接在一起
• 纵向堆叠将两张表或多张表在Y轴方向,即纵向拼接在一起
• 注意使用concat时,axis =1用于横向,0代表纵向
• 注意join取inner或者outer时,分别代表交集和并集

merge1 = pd.concat([df1,df2],axis=1,join='inner’)
merge1 = pd.concat([df1,df2],axis=1,join='outer’)
order_merge = pd.concat([order1,order2,order3],axis=0,ignore_index=False)
order_merge.reset_index(inplace=True)

关联操作:
python数据清洗--数据表操作
纵向合并:
python数据清洗--数据表操作
#5 . 层次化索引
python数据清洗--数据表操作
在一个轴上拥有两个或者两个以上的索引
• 使用loc语句进行访问
• loc里面接受tuple,如loc[(a,b),:]