ホーム > python > pandas > 【pandas】DataFrame形式のデータ生成/データ取得

【pandas】DataFrame形式のデータ生成/データ取得

pythonpandas

DataFrameとは

Pythonのデータ分析ライブラリの1つであるpandasで使用できるデータ構造であり、2次元の表形式でデータを扱うことが出来ます。
■Pycharmで見た場合の例:
20230105150900
※使用データ:国勢調査 / 令和2年国勢調査 / 小地域集計 (主な内容:基本単位区別,町丁・字別人口など) 13:東京都

配列を用いた処理などと比較すると処理が遅いというデメリットがありますが、様々な機能が用意されており、データ分析を行いやすいというメリットがあります。



DataFrameの生成

公式ドキュメントにある通り、コンストラクタpandas.DataFrameのdataにndarrayやdict、listを指定することでDataFrameを生成することが出来ます。
また、csvやエクセルファイルから生成することも可能です。


numpy配列から生成

1次元、2次元どちらでも可です。

import pandas as pd
import numpy as np
if __name__ == '__main__':
# 1次元のnumpy配列
input_ndarr_1d = np.arange(5)
df_ndarr_1d = pd.DataFrame(input_ndarr_1d)
print(df_ndarr_1d)
# 出力結果
# 0
# 0 0
# 1 1
# 2 2
# 3 3
# 4 4
# 2次元のnumpy配列
input_ndarr_2d = np.arange(10).reshape(2, 5)
df_ndarr_2d = pd.DataFrame(input_ndarr_2d)
print(df_ndarr_2d)
# 出力結果
# 0 1 2 3 4
# 0 0 1 2 3 4
# 1 5 6 7 8 9

columns、indexに配列を指定することで、列/行名を指定することが出来ます。

import pandas as pd
import numpy as np
if __name__ == '__main__':
# 2次元のnumpy配列
input_ndarr_2d = np.arange(10).reshape(2, 5)
df_ndarr_2d = pd.DataFrame(input_ndarr_2d,
columns=['col0', 'col1', 'col2', 'col3', 'col4'],
index=['index0', 'index1'])
print(df_ndarr_2d)
# 出力結果
# col0 col1 col2 col3 col4
# index0 0 1 2 3 4
# index1 5 6 7 8 9

リストから生成

numpy配列同様、1次元、2次元どちらでも可です。 また、辞書型データのリストでもOKです。

import pandas as pd
if __name__ == '__main__':
# 1次元のリスト
input_list_1d = [0, 1, 2, 3, 4]
df_list_1d = pd.DataFrame(input_list_1d)
print(df_list_1d)
# 出力結果
# 0
# 0 0
# 1 1
# 2 2
# 3 3
# 4 4
# 2次元のリスト
input_list_2d = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]]
df_list_2d = pd.DataFrame(input_list_2d)
print(df_list_2d)
# 出力結果
# 0 1 2 3 4
# 0 0 1 2 3 4
# 1 5 6 7 8 9
# リスト(辞書型)
input_dict = [{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4},
{'0': 5, '1': 6, '2': 7, '3': 8, '4': 9}]
df_dict = pd.DataFrame(input_dict)
print(df_dict)
# 出力結果
# 0 1 2 3 4
# 0 0 1 2 3 4
# 1 5 6 7 8 9

辞書型データから生成

columnsを指定することで、特定のデータのみでDataFrameを生成することが出来たり、ネスト構造の辞書型データからDataFrameを生成することが出来ます。

import pandas as pd
if __name__ == '__main__':
# 辞書型(リスト)
input_dict = {'0': [0, 1, 2, 3, 4], '1': [5, 6, 7, 8, 9]}
df_dict = pd.DataFrame(input_dict)
print(df_dict)
# 出力結果
# 0 1
# 0 0 5
# 1 1 6
# 2 2 7
# 3 3 8
# 4 4 9
# 辞書型(リスト) columns指定
df_dict_col = pd.DataFrame(input_dict, columns=['0'])
print(df_dict_col)
# 出力結果
# 0
# 0 0
# 1 1
# 2 2
# 3 3
# 4 4
# 辞書型(ネスト)
input_dict_nest = {'col0': {'index0':0, 'index1':1}, 'col1': {'index0':2, 'index1':3}}
df_dict_nest = pd.DataFrame(input_dict_nest)
print(df_dict_nest)
# 出力結果
# col0 col1
# index0 0 2
# index1 1 3

csv、Excelファイルから取得

pandasのread_csv()やread_excel()などを使用することで、csv、ExcelファイルなどからDataFrameを生成することが出来ます。
詳細は下記記事を参照してください。
Python pandasでcsvファイル読み込み(DataFrame形式でデータ取得)
Python pandasでExcelファイル読み込み(DataFrame形式でデータ取得)


DBから取得

MySQLやSQL ServerのデータをDataFrameとして取得することも可能です。
詳細は下記記事を参照してください。
Python pandasでMySQLとSQL Serverからデータ取得