pandas的高级操作

1.值的替换操作
1.单值替换操作:df.replace(to_replace=替换的值,value='被替换的值')
:df.to_replace={列标签:替换值} value='value'按照列指定某个值替换
2.多值替换:df.replace(to_replace={被替换的值:'值',被替换的值:'值'}) #多值替换
2.映射操作:就是自己创建一个映射关系表,比如字典,然后把要映射的值按照字典的键值关系进行绑定
map是数据Series的方法,只可以被Series调用
eg:
from pandas import DataFrame

dic = {
'name':['xuezhijun','pengyi',],
'grade':['100','60',]
}
df = DataFrame(data=dic)
dic = {'xuezhijun':'handsome','pengyi':'sb'}
df['e_name'] = df['name'].map(dic) # 用名字作映射
print(df)


from pandas import DataFrame

dic = {
'name':['xuezhijun','pengyi',],
'grade':['100','60',]
}
df = DataFrame(data=dic)
def after_grade(grade):
return int(grade)+10
df['after_grade'] = df['grade'].map(after_grade)
print(df)


3.numpy.random.permutation(3) 生成一个0-3的3个数构成数组
4.将数据打乱(行列索引打乱)(索引只可以使用隐式索引):
df.take(indices=np.random.permutation(3),axis=1).take(indices=np.random.permutation(100),axis=0)



5.数据的进行分类处理
df.groupby(by= '按照什么进行分组处理')
df.groupby(by='xx').groups # 查看分组的情况
eg."""利用分组与映射的结合"""
from pandas import DataFrame

df = DataFrame({'item':['Apple','Banana','Orange','Banana','Orange','Apple'],
'price':[4,3,3,2.5,4,2],
'color':['red','yellow','yellow','green','green','green'],
'weight':[12,20,50,30,20,44]})


mean_price = df.groupby(by='item')['price'].mean()
dic = mean_price.to_dict() # 按照平均价格生成映射表
df['mean_price'] = df['item'].map(dic)
print(df)
6.在分组后看还可以使用自己定义的函数,使用transform和apply方法
eg:
def my_mean(s):
sum = 0
for i in s:
sum += i
return sum/len(s)
df.groupby(by='item')['price'].apply(my_mean)

def my_mean(s):
sum = 0
for i in s:
sum += i
return sum/len(s)
df.groupby(by='item')['price'].transform(my_mean)
transform是对返回的结果尽行了映射操作,而apply没有


6.数据加载操作
csv文件的读取: df.read_csv('文件路径',sep='分割符号',header = None ) # 如果不将header说明,就会以文本的第一行作为行序列
数据库文件的读取:
第一步:获取连接对象:conn = sqlite3.connect('../data/weather_2012.sqlite')
第二步:读取数据df.read_sql = ('查询语句','conn')
写入数据:df.to_sql('df_sql',conn)

7.透视表:df.pivot_table(index = '',values= '', columns= '',aggfunc ='')
参数:
index::分类汇总的分类条件,每个透视表都有一个index
values:对计算的数据进行筛选,就是说我们想看哪些数据就在value中写
Aggfunc:设置我们对数据聚合时进行的函数操作,当我们未设置aggfunc时,它默认aggfunc='mean'计算均值。
eg:df.pivot_table(index=['主客场','胜负'],values=['得分','篮板','助攻'],aggfunc='sum')
一般使用这种操作:df.pivot_table(index=['主客场','胜负'],aggfunc={'得分':'sum','篮板':'mean','助攻':'max'})
8.交叉表:pd.crosstab(index,colums)
◾index:分组数据,交叉表的行索引
◾columns:交叉表的列索引


posted @ 2020-07-06 12:50  大魔头的取经故事  阅读(211)  评论(0编辑  收藏  举报