首页 > 其他 > 详细

第十二节 pandas变量变换

时间:2020-03-25 00:07:07      阅读:87      评论:0      收藏:0      [点我收藏+]
import pandas as pd
import numpy as np
import math
pd.options.display.max_rows = 10  # 设置显示行数

df1 = pd.read_csv(rE:\anacondatest\PythonData\高校信息.csv, encoding=gbk, index_col=学校名称)

# 添加一列值为1的列
df1[cons] = 1

# 通过原变量列经过四则运算生成新列
df1[new] = df1.总分 + df1.名次 + 1
df1[new1] = np.sqrt(df1.总分)  # numpy支持serial数据格式运算,math库中的sqrt方法就不行,如果使用math库,要和apply连用才可以

# 基于一个原变量做函数运算
df1[new3] = df1.总分.apply(math.sqrt)
df1[new3] = df1.总分.apply(np.sqrt)

# 对所有单元格进行相同的函数运算
df2 = df1[[名次, 总分]].applymap(math.sqrt)  # 返回
‘‘‘
               名次         总分
学校名称                        
北京大学     1.000000  10.000000
清华大学     1.414214   9.924717
‘‘‘

# 不改变原来的数据框,生成新的数据框
df3 = df1.assign(new4 = df1.总分.apply(math.sqrt))

# 在指定位置插入变量列,该方法直接改变原来的数据框
df1.insert(1, new5, cons)  # 1表示列索引,new5变量列名字,cons新列的值

# 修改/替换变量值,本质是如何指定到单元格的问题,只要能准确找到单元格地址,就能准确替换
# print(df1.所在城市.isin([‘上海‘]))
‘‘‘
学校名称
北京大学      False
清华大学      False
‘‘‘
# print(df1.head())
df1.所在城市[70] = 上海
df1[所在城市][70] = 上海
df1.loc[70, 所在城市] = 上海

# 对应数值的替换
df1.所在城市.replace(上海, 魔都, inplace=False)  # 将所在城市的上海全部替换成魔都
df1.所在城市.replace([北京, 魔都], [帝都, 上海], inplace=False)
df1.所在城市.replace({帝都:北京, 上海:魔都}, inplace=False)

# 指定数值替换
df1.总分.iloc[0:3] = 10  # 总分列1-3行全部数据替换成10
df1.iloc[0:3, 总分] = 10  # 总分列1-3行全部数据替换成10
df1.loc[df1.名次<10, 总分] =20  # 用index引出相应的索引
df1.总分[df1.名次<10] = 25
df1.loc[df1.query("名次<10 and 类型==‘综合‘").index, 总分] = 10  # query语句可以用于index定位,然后实现数值替换,但是无法直接实现数值替换,因为query生成的是数据的copy而不是数据地址的引用

# 哑变量变换
print(df1.head())
pd.get_dummies(df2.类型, prefix=pre, prefix_sep=-)  # prefix哑变量列名称前缀,prefix_sep前缀和序号直接的连接字符
pd.get_dummies(df1, columns=[类型])  # columns希望转换的原始列名,不指定转换所有符合条件的

# 数值变量分段,bins具体分段设定,right每段是否包括右侧边界,include_lowest第一段是否包括最左侧的值,需要和right参数配合使用
df1[new6] = pd.cut(df1.名次, bins=[1, 3, 7], right=True, include_lowest=True)

 

第十二节 pandas变量变换

原文:https://www.cnblogs.com/kogmaw/p/12563074.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!