zoukankan      html  css  js  c++  java
  • pandas.DataFrame.from_dict的使用介绍

    Pandas几个星期不用,差不多又快全部忘记了。便于记忆,还是写一些痕迹,加深记忆。

    参考链接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.from_dict.html

    这是一个类方法,创建一个df对象。

    Parameters

    datadict

    Of the form {field : array-like} or {field : dict}.

    orient{‘columns’, ‘index’}, default ‘columns’

    The “orientation” of the data. If the keys of the passed dict should be the columns of the resulting DataFrame, pass ‘columns’ (default). Otherwise if the keys should be rows, pass ‘index’.

    dtypedtype, default None

    Data type to force, otherwise infer.

    columnslist, default None

    Column labels to use when orient='index'. Raises a ValueError if used with orient='columns'.

    对于参数的设置,datadict在默认下,传入参数为{key: {key: value}}或者{key:[...]}

    这样的情况下,使用默认的orient属性,key将当做columns使用。

    In [22]: mydict = {'name':{1:'sidian'},'age':{2:'18'}}                                    
    
    In [23]: pd.DataFrame.from_dict(mydict)                                                   
    Out[23]: 
         name  age
    1  sidian  NaN
    2     NaN   18
    

      这是使用了字典嵌套字典的写法,外层字典的key为columns,values内的dict的keys为rows的名称,缺省的值用了NAN

    当修改orient的默认值'columns'为'index',内部的key为columns,外部的key为rows

    In [25]: pd.DataFrame.from_dict(mydict,orient='index')                                                          
    Out[25]: 
               1    2
    name  sidian  NaN
    age      NaN   18
    

      当时使用字典嵌套字典的时候,设置了orient='index'后,通过设置columns只会显式,在原df中已经存在的columns

    In [29]: pd.DataFrame.from_dict(mydict,orient='index', columns=[2,3])                                           
    Out[29]: 
          2    3
    age  18  NaN
    
    In [30]: pd.DataFrame.from_dict(mydict,orient='index', columns=[3,4])                                           
    Out[30]: 
    Empty DataFrame
    Columns: [3, 4]
    Index: []
    

      pd.DataFrame.from_dict的类方法在使用字典套字典的形式还是比较特别的,下面使用链接中的案例key与list的形式。

    In [32]: data = {'col_1': [3, 2, 1, 0], 'col_2': ['a', 'b', 'c', 'd']}                                          
    
    In [33]: pd.DataFrame.from_dict(data)                                                                           
    Out[33]: 
       col_1 col_2
    0      3     a
    1      2     b
    2      1     c
    3      0     d
    

      这个rows的编号,自动生成,keys为columns的名称。

    设置orient='index',key将变成rows的index,rows会变成默认的0,1,2,3...

    In [34]: pd.DataFrame.from_dict(data,orient='index')                                                            
    Out[34]: 
           0  1  2  3
    col_1  3  2  1  0
    col_2  a  b  c  d
    

      通过设置columns,来替换显式的默认columns的名称.

    In [35]: pd.DataFrame.from_dict(data,orient='index',columns=list('abcd'))                                       
    Out[35]: 
           a  b  c  d
    col_1  3  2  1  0
    col_2  a  b  c  d
    

      

    工作中碰到,就是一个普通的dict,也就是说value是不可迭代的对象,必须设置orient='index',要不然会报错,也就是dict的key不能用于columns。

    In [41]: new_dict                                                                                               
    Out[41]: {'name': 'sidian', 'age': 18}
    
    In [42]: pd.DataFrame.from_dict(new_dict, orient='index')                                                       
    Out[42]: 
               0
    name  sidian
    age       18
    
    In [43]: pd.DataFrame.from_dict(new_dict, orient='index', columns=['info'])                                     
    Out[43]: 
            info
    name  sidian
    age       18
    
    In [44]:         
    

      

  • 相关阅读:
    色彩空间RGB/CMYK/HSL/HSB/HSV/Lab/YUV基础理论及转换方法:RGB与YUV
    三色视者与四色视者身后的理论基础:色彩原理
    再谈设计原则—7种设计原则学习总结笔记
    sass安装:webpack sass编译失败,node-sass安装失败的终极解决方
    再谈Java数据结构—分析底层实现与应用注意事项
    再谈js对象数据结构底层实现原理-object array map set
    浮点数精度问题透析:小数计算不准确+浮点数精度丢失根源
    再谈编程范式—程序语言背后的思想
    再谈循环&迭代&回溯&递归&递推这些基本概念
    再谈MV*(MVVM MVP MVC)模式的设计原理—封装与解耦
  • 原文地址:https://www.cnblogs.com/sidianok/p/14261262.html
Copyright © 2011-2022 走看看