zoukankan      html  css  js  c++  java
  • 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:交叉表的列索引


  • 相关阅读:
    ZJOI 2019 划水记
    【博弈论】浅谈泛Nim游戏
    HZNU ACM一日游 2019.3.17 【2,4,6-三硝基甲苯(TNT)】
    BZOJ 1008 越狱 组合数学
    BZOJ 1036 树的统计Count 树链剖分模板题
    BZOJ 1012 最大数maxnumber 线段树
    BZOJ 1001 狼抓兔子 平面图的最小割
    SGU---107 水题
    欧拉回路模板
    hdu-3397 Sequence operation 线段树多种标记
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/13254242.html
Copyright © 2011-2022 走看看