Pandas3|DataFrameの作成と編集

  • URLをコピーしました!

ここで学習すること

行列を扱えるDataFrame型の作成方法、参照方法、編集方法を学習します。

DateFramaはSeriesを重ねたような2次元の行列データです。

DataFrameの作成方法

DataFrameの作成方法は以下の2つがあります。

①pd.DataFrame()にSeriesを渡す方法

pd.DataFrame([Series, Series, …])

②pd.DataFrame( )に辞書型のデータを渡す方法

import pandas as pd

data = {“pref”: [“hyogo”, “osaka”, “nara”, “kyoto”, “siga”],   #dataという辞書型データ

“year”:[2000, 2004, 2006, 2012, 2015],

“hight”: [50, 100, 125, 150, 180]}

 df = pd.DataFrame(data)       #dataをpd.DataFrame()に渡す

 print(df)

=>

  pref  year  hight

hyogo  2000     50

osaka  2004    100

nara  2006    125

kyoto  2012    150

siga  2015    180

DataFrameのインデックスとカラム

DataFrameの行をインデックス、列をカラムと呼びます。

インデックスやカラムを指定せずにDataFrameを作成した場合、インデックスとカラムは0から始まる整数が割り当てられます。

インデックスとカラムの指定はdf.index 、df.columsに列数と同じ長さのリストを代入することで割り当てることができます。

インデックス(カラム)を追加する

import pandas as pd

data = {“pref”: [“hyogo”, “osaka”, “nara”, “kyoto”, “siga”],

“year”:[2000, 2004, 2006, 2012, 2015],

“hight”: [50, 100, 125, 150, 180]}

 df = pd.DataFrame(data)

 print(df)

=>

     pref  year  hight

hyogo  2000     50

osaka  2004    100

nara  2006    125

kyoto  2012    150

このDataFrameに’出生地’, ‘幼稚園’,’小学校’, ‘中学’, ‘高校’のインデックスを追加します。df.indexにリスト型で代入します。

df.index = [‘出生地’, ‘幼稚園’,’小学校’, ‘中学’, ‘高校’]

=>

      pref  year  hight

出生地  hyogo  2000     50

幼稚園  osaka  2004    100

小学校   nara  2006    125

中学   kyoto  2012    150

高校    siga  2015    180

DataFrameの行を追加する

DataFrameに行を追加する場合はappend()を用いてseriesを追加します。

import pandas as pd

data = {“pref”: [“hyogo”, “osaka”, “nara”, “kyoto”, “siga”],

        “year”:[2000, 2004, 2006, 2012, 2015],

        “hight”: [50, 100, 125, 150, 180]}

df = pd.DataFrame(data)  

print(df)   

=> 

    pref  year  hight

0  hyogo  2000     50

1  osaka  2004    100

2   nara  2006    125

3  kyoto  2012    150

4   siga  2015    180

#この行列に以下のSeries行列(行のみ)を追加します。

seriesの行列tsuikaを作成します。

tsuika = pd.Series([“tokyo”, 2018, 200],index=[“pref”,”year”,”hight”])

print(tsuika)

=>

pref     tokyo

year      2018

hight      200

dtype: object

変数dfにtsuikaを追加します。

df = df.append(tsuika,ignore_index=True)

print(df)

=>

    pref  year  hight

0  hyogo  2000     50

1  osaka  2004    100

2   nara  2006    125

3  kyoto  2012    150

4   siga  2015    180

5  tokyo  2018    200

DataFrameに列を追加する

df[“新しいカラム名”]にリストまたはSeriesを代入することで新しい列を追加できます。

import pandas as pd

data = {“pref”: [“hyogo”, “osaka”, “nara”, “kyoto”, “siga”],

        “year”:[2000, 2004, 2006, 2012, 2015],

        “hight”: [50, 100, 125, 150, 180]}

df = pd.DataFrame(data)  

print(df)

=>

pref  year  hight

0 hyogo 2000 50
1 osaka 2004 100
2 nara 2006 125
3 kyoto 2012 150
4 siga 2015 180

この行列に[“幼稚園”,”小学校”,”中学”, “高校”,”大学”]  の列を追加します。df[“新しいカラム名”]=[新しいリスト]で追加できます。

df[“level”]=[“幼稚園”,”小学校”,”中学”, “高校”,”大学”]      

print(df)

=>

pref  year  hight level

0 hyogo 2000 50 幼稚園
1 osaka 2004 100 小学校
2 nara 2006 125 中学
3 kyoto 2012 150 高校
4 siga 2015 180 大学

DataFrameのデータの参照

DataFrameのデータをインデックスやカラムを指定して参照する場合、df.loc[“インデックスのリスト”, “カラムのリスト”]で参照できます。

import pandas as pd

data = {“pref”: [“hyogo”, “osaka”, “nara”, “kyoto”, “siga”],

        “year”:[2000, 2004, 2006, 2012, 2015],

        “hight”: [50, 100, 125, 150, 180]}

df = pd.DataFrame(data)

print(df)

=>

pref  year  hight

0 hyogo 2000 50
1 osaka 2004 100
2 nara 2006 125
3 kyoto 2012 150
4 siga 2015 180

df = df.loc[“インデックスのリスト”, “カラムのリスト”]でインデックス[1,2]、カラム[“year”]のデータを参照します。

df = df.loc[[1,2],[“year”]]

print(df)

=>

   year

1  2004

2  2006

インデックスやカラムの番号で参照する場合はdf.iloc[[インデックス],[カラム]]で参照します。インデックス[1,2]、カラム[2]のデータを参照します。

df = df.iloc[[1,2],[2]]

print(df)

   hight

1    100

2    125

DataFramaの行や列を削除する

DataFrameの行や列を削除する場合、df.drop()を用います。

import pandas as pd

data = {“pref”: [“hyogo”, “osaka”, “nara”, “kyoto”, “siga”],

        “year”:[2000, 2004, 2006, 2012, 2015],

        “hight”: [50, 100, 125, 150, 180]}

df = pd.DataFrame(data)  

pritn(df)

=>

pref  year  hight

0 hyogo 2000 50
1 osaka 2004 100
2 nara 2006 125
3 kyoto 2012 150
4 siga 2015 180

行を削除する場合は.drop(削除する行)とします。↓では削除する行はrange関数で0行目を指定しています。

df1 = df.drop(range(0,1))

print(df1)

=>

pref  year  hight

1 osaka 2004 100
2 nara 2006 125
3 kyoto 2012 150
4 siga 2015 180

列を削除する場合は第2引数にaxis=1を指定します。

df2 = df.drop(“year”, axis=1)

print(df2)

pref  hight

0 hyogo 50
1 osaka 100
2 nara 125
3 kyoto 150
4 siga 180

DataFrameのデータをソートする

DataFrameのデータを小さい順にソートするにはdf.sort_values(by=”カラムまたはカラムのリスト”, ascending=True)を用います。大きい順の場合はascending=Falseとします。

import pandas as pd

data = {“pref”: [“hyogo”, “osaka”, “nara”, “kyoto”, “siga”],

        “year”:[2000, 2004, 2006, 2012, 2015],

        “hight”: [50, 100, 125, 150, 180]}

df = pd.DataFrame(data)  

 print(df)

    pref  year  hight

0  hyogo  2000     50

1  osaka  2004    100

2   nara  2006    125

3  kyoto  2012    150

4   siga  2015    180

df.sort_values(by=”カラム”, ascending=False)でカラムhightのデータが大きい順に並べ変えます。

df = df.sort_values(by=”hight”, ascending = False)

 print(df)

=>

    pref  year  hight

4   siga  2015    180

3  kyoto  2012    150

2   nara  2006    125

1  osaka  2004    100

0  hyogo  2000     50

よかったらシェアしてね!
  • URLをコピーしました!
目次