Pandas使用技巧:计算变量,插入变量,修改替换变量 (超详细)(附数据集)

目录

一、计算变量

1.基于原变量做简单运算

2.使用内部函数计算

3.1基于一个原变量做函数运算

3.2使用自定义函数

4.不修改原df,而是生成新的df

二、插入变量

1.指定位置增加新列 该方法会直接修改原df

2.函数实现

三、修改替换变量值

1.修改

2.替换

四、指定数值范围的替换

1.使用正则匹配数据

2.iloc loc

3.条件筛选替换

4.使用query()


一、计算变量

1.基于原变量做简单运算

  财产性收入的数值乘10作为名为income的新列。

import pandas as pd
df = pd.read_csv('ex8.6.csv',encoding='utf-8-sig')
df['income'] = df.财产性收入 * 10

原始数据:

地区	工资性收入	经营净收入	财产性收入	转移性收入
0	北京	25161.22	1191.29	696.64	10075.23
1	天津	18794.08	1059.29	462.28	9600.40
2	河北	11686.60	1836.45	318.43	5750.43
3	山西	13146.47	875.24	274.09	5370.29
4	内蒙古	14779.08	2320.36	513.36	4277.38
5	辽宁	13093.86	2285.41	333.55	7166.95
6	吉林	12217.09	1860.32	235.31	4898.99
7	黑龙江	10235.04	1529.14	141.26	5213.05
8	上海	28550.76	1994.12	633.12	9354.29
9	江苏	17761.58	3026.57	667.06	7516.76
10	浙江	20334.25	4383.89	1572.34	7973.91
11	安徽	12915.97	1874.45	569.96	5390.73
12	福建	17438.81	2991.66	1752.82	5194.82
13	江西	11654.36	1721.84	471.73	4808.59
14	山东	17629.40	2294.85	615.69	4349.86
15	河南	12039.24	2264.36	286.02	4937.30
16	湖北	12622.44	1906.73	357.15	5306.95
17	湖南	11550.09	2674.18	770.66	5088.95
18	广东	21092.14	3035.25	1242.95	4848.42
19	广西	13550.16	1699.84	844.91	4751.20
20	海南	12876.92	2158.62	715.40	4343.24
21	重庆	13827.72	1779.43	433.71	5753.42
22	四川	12687.29	1670.51	523.24	4807.05
23	贵州	10754.45	1614.67	356.41	4873.34
24	云南	12416.17	1785.61	1273.99	4779.36
25	西藏	15854.97	486.92	358.07	1415.80
26	陕西	14051.28	771.75	214.18	5032.65
27	甘肃	11195.26	914.30	161.66	3996.15
28	青海	11403.97	1054.60	78.64	5257.77
29	宁夏	12396.71	2367.47	198.48	4691.94
30	新疆	12653.43	1412.32	149.06	3416.35

执行代码后的数据部分截图:

df['income1'] = df.工资性收入 + df.经营净收入

2.使用内部函数计算

  经营净收入开方作为income2。

import numpy
df['income2'] = numpy.sqrt(df.经营净收入)

3.1基于一个原变量做函数运算

df['income3'] = df.工资性收入.apply(numpy.sqrt)

3.2使用自定义函数

  定义一个函数,将转移性收入的数值乘10作为income4

def get_first(data):
    data *= 10
    return data
df['income4'] = df.转移性收入.apply(get_first)

4.不修改原df,而是生成新的df

df2 = df.assign(income5 = df.经营净收入.apply(get_first))

  此时输出df,df不变。

二、插入变量

1.指定位置增加新列 该方法会直接修改原df

df.insert(6,'income0',100)

  在位置6添加名为income0的新列,填充数值100。

2.函数实现

df.insert(7,'income00',df.经营净收入.apply(get_first))

三、修改替换变量值

  这个问题本质上是如何直接指定单元格的问题,只要能准确定位单元地址, 就能够做到准确替换。

1.修改

df.地区[0] = '未知'  #将地区列的第0个元素修改为未知
df.地区[2] = '未知'
df['工资性收入'][1] = 10000  #将工资性收入列的第1个元素修改为10000
df.loc[1,'经营净收入'] = 2000  #将经营净收入列的第1个元素修改为2000 

2.替换

例1

df.地区[df.地区.isin(['未知'])] = '已知'

   将地区列所有未知替换为已知。

例2

df.地区.replace('山西','未知',inplace = False)

  将山西替换为未知,inplace = False表示不修改原数据。

例3

df.地区.replace(['内蒙古','辽宁'],['nmg','ln'],inplace = False)

  将内蒙古,辽宁替换为nmg,ln。

例4

df.地区.replace({'nmg':'内蒙古','ln':'辽宁'},inplace = False)

将nmg,ln替换为内蒙古,辽宁。

四、指定数值范围的替换

1.使用正则匹配数据

df.地区.replace(regex = '已.+',value = 'xxx',inplace = False)

  将所有已知替换为xxx。

2.iloc loc

df.income.iloc[0:3] = 20  #将income列0~3行的数据替换为20
df.income1.loc[0:2] =30  #将income1列0~2行的数据替换为30

3.条件筛选替换

df.income2[df.income2>40] = 40

  将income列中大于40的替换为40.

4.使用query()

df.loc[df.query('地区 == "已知" and income3 > 130 ').income3.index,'income3'] = 100

  将地区为已知且income3的值大于130的替换为100。

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值