【pandas】DataFrame形式のデータ生成/データ取得
DataFrameとは
Pythonのデータ分析ライブラリの1つであるpandasで使用できるデータ構造であり、2次元の表形式でデータを扱うことが出来ます。
■Pycharmで見た場合の例:
※使用データ:国勢調査 / 令和2年国勢調査 / 小地域集計 (主な内容:基本単位区別,町丁・字別人口など) 13:東京都
配列を用いた処理などと比較すると処理が遅いというデメリットがありますが、様々な機能が用意されており、データ分析を行いやすいというメリットがあります。
DataFrameの生成
公式ドキュメントにある通り、コンストラクタpandas.DataFrameのdataにndarrayやdict、listを指定することでDataFrameを生成することが出来ます。
また、csvやエクセルファイルから生成することも可能です。
numpy配列から生成
1次元、2次元どちらでも可です。
import pandas as pdimport numpy as npif __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 pdimport numpy as npif __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 pdif __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 pdif __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からデータ取得