美文网首页我爱编程
pandas数据规整化

pandas数据规整化

作者: yandaxin | 来源:发表于2018-03-15 16:27 被阅读0次
    1.合并数据集

    ①索引上的合并
    merge()函数的参数

    参数 说明
    left 参与合并的左边的DataFrame
    right 参与合并的右边的DataFrame
    how 连接方式,类似于数据库"inner""outer"left""right",默认是"inner"
    on 用于连接的列名,未指定的话,以left和right列名的交集作为连接键
    left_on 左侧DataFrame中用作连接键的列
    right_on 右侧DataFrame中用作连接键的列
    left_index 将左侧的行索引用作连接键的列
    right_index 类似于left_index
    sort 合并后排序,默认是true,可以设置禁用
    copy 设置为False,可以在某些特殊情况下避免将数据结果复制到结果数据结构中,默认总是复制

    另外df对象还有join()方法,可以更方便地按索引合并。


    ②轴向连接


    通过join_axes指定要在其他轴上使用的索引


    在连接轴上创建一个层次化索引,来区分不同的片段



    如果沿着axis=1方向进行合并,则keys就会成为DataFrame的列头


    concat()函数的参数

    参数 说明
    objs 参与连接的pandas对象,唯一必须的参数
    axis 指明连接的轴向
    join "inner"/"outer".指明其他轴上的索引是按交集还是并集合并
    join_axes 指明用于其他n-1条轴的索引,不执行并集/交集运算
    keys 在连接轴上创建一个层次化索引,来区分不同的片段
    levels 指定用作层次化索引各级别上的索引,前提是设置了keys
    names 用于创建分层级别的名称,前提是设置了keys/levels
    verify_integrity 检测结果对象新轴上的重复情况,默认(False)允许重复
    ignore_index 不保留连接轴上的索引,产生一组新索引range(len)

    ③合并重叠数据
    对于索引全部或部分重叠的两个数据集
    np.where(pd.isnull(a),b,a)
    df1.combine_first(df2)

    2.重塑和轴向旋转

    ①重塑层次化索引
    stack():将数据的列“旋转”为行
    unstack():将数据的行“旋转”为列


    unstack操作的是最内层

    ②将“长格式”旋转为“宽格式”
    将关系型数据库里的某个属性作为行索引或列索引,创建DataFrame对象
    pivoted=ldata.pivot('date','item','value')
    date列作为行索引
    item列作为列索引
    value是填充值
    另外ldata.set_index(['date','item']).unstack('item')也可以实现

    3.数据转换

    ①移除重复数据
    data.duplicated()返回布尔型的Series,表示各行是否重复
    data.drop_duplicates()返回一个移除了重复行的DataFrame
    data.drop_duplicates(['key1'])根据key1列过滤重复行,相同的行默认留下第一次出现的行,传入take_last=True则保留最后一个

    ②利用函数或映射进行数据转换
    Series的map()方法可以接受一个函数或含有映射关系的字典型对象
    data['food'].map(lambda x:meat_to_animal[x.lower()])

    ③替换值
    data.replace(-999,np.nan)
    data.replace([-999,-1000],np.nan)
    data.repace([-999,-1000],[np.nan,0])
    data.replace({-999:np.nan,-1000:0})

    ④重命名轴索引
    data.index=data.index.map(str.upper)
    data.rename(index=str.title,columns=str.upper)
    data.rename(index={'mm':'ss'},columns={'yy':'xx'})
    传入才能inplace=True就地修改数据集,不然都是副本

    ⑤离散化和面元划分


    cut()和qcut()的区别是:cut()根据最大值最小值计算等长面元,qcut()使用的是样本分位数


    ⑥检测和过滤异常值
    选出全部含有“超过3或-3的值”的行:data[(np.abs(data)>3).any(1)]
    将值限制在-3到3之间:data[np.abs(data)>3]=np.sign(data)*3
    其中data是DataFrame对象

    ⑦计算指标/哑变量
    DataFrame的某一列中含有k个不同的值,则可以派生出一个k列矩阵或DataFrame,其值全为0或1。


    相关文章

      网友评论

        本文标题:pandas数据规整化

        本文链接:https://www.haomeiwen.com/subject/ucdhqftx.html