Pandas詳細2のDataFrameオブジェクト


に約束
import pandas as pd
from pandas import DataFrame
import numpy as np

DataFrame
DataFrameはテーブル型のデータ構造で、行インデックス(indexに保存)と列インデックス(columnsに保存)があります.
一、DataFrameオブジェクトの共通属性:
  • DateFrameを作成する方法はたくさんあります(後述します).最も一般的なのは、等長リストまたはNumpyからなる辞書を直接入力することです.
  • dict1={"Province":["Guangdong","Beijing","Qinghai","Fujiang"],
          "year":[2018]*4,
          "pop":[1.3,2.5,1.1,0.7]}
    df1=DataFrame(dict1)
    df1
    コード結果:
    Province
    pop
    year
    0
    Guangdong
    1.3
    2018
    1
    Beijing
    2.5
    2018
    2
    Qinghai
    1.1
    2018
    3
    Fujiang
    0.7
    2018
  • Seriesと同様に、作成時にシーケンスを指定することもできます(辞書に欠落しているNaNの場合):
  • df2=DataFrame(dict1,columns=['year','Province','pop','debt'],index=['one','two','three','four'])
    df2
    コード結果:
    year
    Province
    pop
    debt
    one
    2018
    Guangdong
    1.3
    NaN
    two
    2018
    Beijing
    2.5
    NaN
    three
    2018
    Qinghai
    1.1
    NaN
    four
    2018
    Fujiang
    0.7
    NaN
  • Seriesと同様に、DataFrameのindexとcolumnsにはname属性があります:
  • df2
    コード結果:
    year
    Province
    pop
    debt
    one
    2018
    Guangdong
    1.3
    NaN
    two
    2018
    Beijing
    2.5
    NaN
    three
    2018
    Qinghai
    1.1
    NaN
    four
    2018
    Fujiang
    0.7
    NaN
    df2.index.name='English'
    df2.columns.name='Province'
    df2
    コード結果:
    Province
    year
    Province
    pop
    debt
    English
    one
    2018
    Guangdong
    1.3
    NaN
    two
    2018
    Beijing
    2.5
    NaN
    three
    2018
    Qinghai
    1.1
    NaN
    four
    2018
    Fujiang
    0.7
    NaN
  • shape属性で取得するDataFrameの行数と列数:
  • df2.shape

    コード結果:
    (4, 4)
    
  • valuesプロパティは、DataFrameのデータ:
  • を2次元ndarrayで返します.
    df2.values

    コード結果:
    array([[2018, 'Guangdong', 1.3, nan],
           [2018, 'Beijing', 2.5, nan],
           [2018, 'Qinghai', 1.1, nan],
           [2018, 'Fujiang', 0.7, nan]], dtype=object)
    
  • カラムインデックスは、DataFrameオブジェクトのプロパティとして使用されます:
  • df2.Province

    コード結果:
    English
    one      Guangdong
    two        Beijing
    three      Qinghai
    four       Fujiang
    Name: Province, dtype: object
    

    二、DataFrameオブジェクトの一般的なアクセス、割り当て、削除方法:
  • DataFrame_object[]はカラムインデックスでアクセスでき、ラベルが1つしかない場合Series、複数の場合DataFrame:
  • を返します.
    df2['Province']
    コード結果:English one Guangdong two Beijing three Qinghai four Fujiang Name:Province,dtype:object
    df2[['Province','pop']]
    コード結果:
    Province
    Province
    pop
    English
    one
    Guangdong
    1.3
    two
    Beijing
    2.5
    three
    Qinghai
    1.1
    four
    Fujiang
    0.7
  • DataFrame_object.loc[]指定した行を行インデックスで取得できます:
  • df2.loc['one']

    コード結果:
    Province
    year             2018
    Province    Guangdong
    pop               1.3
    debt              NaN
    Name: one, dtype: object
    
    df2.loc['one':'three']
    コード結果:
    Province
    year
    Province
    pop
    debt
    English
    one
    2018
    Guangdong
    1.3
    NaN
    two
    2018
    Beijing
    2.5
    NaN
    three
    2018
    Qinghai
    1.1
    NaN
  • はまた、単一値:
  • を取得することができる.
    df2.loc['one','Province']

    コード結果:
    'Guangdong'
    
  • DataFrameの列は、値(値または値のセット)を割り当てることによって変更できます:
  • .
    df2["debt"]=np.arange(2,3,0.25)
    df2
    コード結果:
    Province
    year
    Province
    pop
    debt
    English
    one
    2018
    Guangdong
    1.3
    2.00
    two
    2018
    Beijing
    2.5
    2.25
    three
    2018
    Qinghai
    1.1
    2.50
    four
    2018
    Fujiang
    0.7
    2.75
  • 存在しないカラムに値を割り当てると、delで削除できる新しいカラムが作成されます:
  • df2['eastern']=df2.Province=='Guangdong'
    df2
    コード結果:
    Province
    year
    Province
    pop
    debt
    eastern
    English
    one
    2018
    Guangdong
    1.3
    2.00
    True
    two
    2018
    Beijing
    2.5
    2.25
    False
    three
    2018
    Qinghai
    1.1
    2.50
    False
    four
    2018
    Fujiang
    0.7
    2.75
    False
    del df2['eastern']
    df2.columns

    コード結果:
    Index(['year', 'Province', 'pop', 'debt'], dtype='object', name='Province')
    
  • もちろん、転置も可能:
  • df2.T

    English
    one
    two
    three
    four
    Province
    year
    2018
    2018
    2018
    2018
    Province
    Guangdong
    Beijing
    Qinghai
    Fujiang
    pop
    1.3
    2.5
    1.1
    0.7
    debt
    2
    2.25
    2.5
    2.75
    三、複数種類のDataFrameの作成方法
  • DataFrame()を呼び出すと、複数のフォーマットのデータをDataFrameオブジェクトに変換できます.3つのパラメータdata、index、columnsは、それぞれデータ、行インデックス、列インデックスです.dataは、
  • であってもよい
    1 D配列
    df3=pd.DataFrame(np.random.randint(0,10,(4,4)),index=[1,2,3,4],columns=['A','B','C','D'])
    df3
    コード結果:
    A
    B
    C
    D
    1
    9
    8
    4
    6
    2
    5
    7
    7
    4
    3
    6
    3
    0
    2
    4
    4
    6
    9
    8
    2辞書
    行インデックスはindexで決定され、列インデックスは辞書のキーで決定されます.
    dict1

    コード結果:
    {'Province': ['Guangdong', 'Beijing', 'Qinghai', 'Fujiang'],
     'pop': [1.3, 2.5, 1.1, 0.7],
     'year': [2018, 2018, 2018, 2018]}
    
    df4=pd.DataFrame(dict1,index=[1,2,3,4])
    df4
    コード結果:
    Province
    pop
    year
    1
    Guangdong
    1.3
    2018
    2
    Beijing
    2.5
    2018
    3
    Qinghai
    1.1
    2018
    4
    Fujiang
    0.7
    2018
    3構造配列
    カラムインデックスは、構造配列のフィールド名によって決定されます.
    arr=np.array([('item1',10),('item2',20),('item3',30),('item4',40)],dtype=[("name","10S"),("count",int)])
    df5=pd.DataFrame(arr)
    df5
    コード結果:
    name
    count
    0
    b’item1’
    10
    1
    b’item2’
    20
    2
    b’item3’
    30
    3
    b’item4’
    40
  • さらにfrom_を呼び出すことができる先頭のクラスメソッドで、特定のデータをDataFrameオブジェクトに変換します.例えばfrom_dict()は、そのorientパラメータが辞書キーに対応する方向を指定し、デフォルトは「columns」:
  • dict2={"a":[1,2,3],"b":[4,5,6]}
    df6=pd.DataFrame.from_dict(dict2)
    df6
    コード結果:
    a
    b
    0
    1
    4
    1
    2
    5
    2
    3
    6
    df7=pd.DataFrame.from_dict(dict2,orient="index")
    df7
    コード結果:
    0
    1
    2
    a
    1
    2
    3
    b
    4
    5
    6
    四、DataFrameオブジェクトを別の形式のデータに変換する
  • to_dict()メソッドはDataFrameオブジェクトを辞書に変換し、パラメータorientは辞書要素のタイプを決定します:
  • df7.to_dict()

    コード結果:
    {0: {'a': 1, 'b': 4}, 1: {'a': 2, 'b': 5}, 2: {'a': 3, 'b': 6}}
    
    df7.to_dict(orient="records")

    コード結果:
    [{0: 1, 1: 2, 2: 3}, {0: 4, 1: 5, 2: 6}]
    
    df7.to_dict(orient="list")

    コード結果:
    {0: [1, 4], 1: [2, 5], 2: [3, 6]}
    
  • に似ているのはto_ですrecords()、to_csv()等
  • 皆さんの閲覧に感謝して、私の努力があなたを助けることができることを望んで、共に努力します!