[pandas]DataFrameで初期化したい

Pandasのデータ型であるDataFrame型の初期化について記載する。ここではリスト型、辞書型、Numpy型からの初期化を対象とする。

この記事を読んでわかること

  • リスト型、辞書型、Numpy型からDataFrame型への変換(DataFrame型の初期化)

先にまとめ

※pd = pandas, np = numpy

ケースコードコード(左)のdataの中身
リスト型からの初期化pd.DataFrame(data, columns=[“列名A”, “列名B“…] )[[A1,B1],[A2,B2],..]
辞書(dict)型からの初期化pd.DataFrame(data){“列名A” : [A1,A2], “列名B”:[B1,B2],…}
Numpy型からの初期化pd.DataFrame(data, columns=[“列名A”, “列名B”…] )np.array( [[A1,B1],[A2,B2],..] )

Pandas.DataFrame型の初期化

リスト型からの初期化

リスト型の値をそのまま引数に指定すれば、OK。

import pandas as pd

data_list = [["Apple",100],["Orange",40],["Lemon",90]] 
df_list = pd.DataFrame(data_list)
print(df_list)

<出力結果>

        0    1 
0   Apple  100 
1  Orange   40 
2   Lemon   90

list型の中身は、以下の構成。

data_list = [[列0の値,列1の値],[列0の値,列1の値],......]

ただしこの場合、引数にリスト型の値のみを指定すると、列名がデフォルトになるため、命名したい場合は以下。

df_list = pd.DataFrame(data_list,columns=["Name","Price"])
print(df_list)

<出力結果>

     Name  Price 
0   Apple    100 
1  Orange     40 
2   Lemon     90 

列名は後からでも変更は可能。

Python入門 : ゼロから作る株価予想可視化AI / Pandas 基礎 : データの可視化

辞書(dict)型からの初期化

辞書型の場合も値をそのまま引数に指定すれば、OK。

import pandas as pd

data_dict = {"Name" : ["Apple","Orange","Lemon"], "Price" : [100,40,90]}
df_dict = pd.DataFrame(data_dict)
print(df_dict)

<出力結果>

     Name  Price 
0   Apple    100 
1  Orange     40 
2   Lemon     90

辞書型の中身は、以下の構成。リスト型と異なるの注意。

data_dict = {"列名0":[列0の値,列0の値,...],"列名1":[列1の値,列1の値,...],......]

リスト型と違い、この場合は列名が格納される。

Numpy型からの初期化

Numpy型の場合も値をそのまま引数に指定すれば、OK。

import pandas as pd
import numpy as np

data_np = np.array([["Apple","100"],["Orange","40"],["Lemon","90"]] )
df_np = pd.DataFrame(data_np,columns=["Name","Price"])
print(df_np)

<出力結果>

     Name Price 
0   Apple   100 
1  Orange    40 
2   Lemon    90

Numpy型の中身は、以下の構成。

data_np = np.array([[列0の値,列1の値],[列0の値,列1の値],......])

リスト型と同様に列名を指定しないとデフォルトの列名が格納される。列名は後からでも変更は可能。

【世界で37万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜

更新履歴

※2021/11/22追記:columnsの指定は、{ }だと順序が保証ないと指摘をいただきました。[ ](リスト)にすると順序が保証されるそうです。

参考

Pandas公式サイト:pandas.DataFrame

pandas.DataFrame — pandas 2.2.1 documentation