pandas 常用函数
原创
©著作权归作者所有:来自51CTO博客作者塞上江南o的原创作品,请联系作者获取转载授权,否则将追究法律责任
目录
- df.replace()
- df.map()
- df.rename()
- df.set_index()
- 将某一列作为索引
- 将某两列作为索引 即复合索引
- 设置复合索引 源码
- df.apply()
- df.drop_duplicates()
- df.drop()
- df.dropna()
df.replace()
替换
import numpy as np
import pandas as pd
df = DataFrame({'color':['red','blue','yellow'],'price':[111,222,333]})
display(df)
将所有333替换444
df.replace({333:444},inplace = True)
df.map()
自定义函数
映射
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,101,size=(3,3)),columns=['python','math','english'],index=['张三','李四','王五'])
df
取3科平均成绩进行判断,<60的为不及格,<90的为及格 ,其它的为优秀
def avg(x):
if x <60:
return '不及格'
elif x < 90:
return '及格'
else:
return '优秀'
df['平均结果'] = df.mean(axis=1).map(avg)
df
lambda 表达式
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,101,size=(3,3)),columns=['python','math','english'],index=['张三','李四','王五'])
df
- 所有同学的java成绩是在python成绩的基础上+10得到的
# java成绩是在python成绩的基础上+10得到的
df['java'] = df['python'].map(lambda x:x +10)
df
df.rename()
修改行列索引的名称
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randint(0,101,size=(3,3)),columns=['python','math','english'],index=['张三','李四','王五'])
df
# inplace = True 在原数据的基础上修改
df.rename(index={'张三':'zhangsan'}, columns = {'math':'数学','english': '英语'},inplace = True)
df
df.set_index()
将某一列作为索引
import pandas as pd
import numpy as np
df = pd.DataFrame({'name':['tom','alice', 'jack'],
'id':[10085, 10086, 10087]})
df
# 将id这一列作为索引
# inplace=True 表示当前操作对原数据生效
# append=False 表示原来的行索引被舍弃 默认被舍弃
# drop=True 删除原id这一列 默认被删除
df.set_index('id',drop=True, append=False, inplace=True)
df
将某两列作为索引 即复合索引
设置复合索引 源码
import pandas as pd
import numpy as np
# 以字典的的格式取创建DataFrane
a=pd.DataFrame({
'a' : range(7),
'b' : range(7, 0, -1),
'c' : ['one', 'one', 'one', 'two', 'two', 'two', 'two'],
'd' : list('hjklmmo')
})
a
# 设置c d两列为复合索引, 然后取出a这一列
x = a.set_index(['c','d'])['a']
x
# Series
type(x)
# 设置c d两列为复合索引, 然后取出a这一列
x = a.set_index(['c','d'])[['a']]
x
# DataFrame
type(x)
df.apply()
函数作为一个对象,能作为参数传递给apply,并且能作为apply的返回值
构建数据
import pandas as pd
df = pd.DataFrame({'A':['a','b','a','b','a','b'],
'B':[1,10,4,40,7,70],
'C':[2,20,5,50,8,80],
'D':[3,30,6,60,9,90]})
df
先分组
grouped = df.groupby('A')
for name,group in grouped:
print(name)
print(group)
求一下分组后的平均值 方差 等
grouped.apply(lambda x:x.describe())
apply处理数据是一组一组的
df.drop_duplicates()
student.xlsx
按id清除重复数据
df.drop()
去掉id这一列
df.dropna()
使用链接