メインコンテンツへスキップ

辞書内包表記でPandasのSeries, DataFrameを作成

·1056 文字·3 分
目次

はじめに
#

辞書内包表記を使って、PandasのSeries, DataFrameを少ないコード量で作成する。

辞書内包表記は、Pythonの標準機能であり、辞書(dict)型の変数を簡潔に作成できる。また、Pandasの配列データ型であるSeries, DataFrameは辞書から作成できる。 そのため、辞書内包表記を使って、Series, DataFrameを少ないコード量で作成する方法を示す。

以降では、Pandasを以下のようにインストールしていることを前提とする。

import pandas as pd

また、環境は以下の通り。

バージョン
Python 3.7.3
Pandas 0.24.2

辞書内包表記
#

辞書内包表記の例を示す。0から9までの数字をキー、各キーを2倍にしたものを値とした辞書を得る。

doubles_dict = {x: x*2 for x in range(10)}
print(doubles_dict)

実行結果

{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}

上記の例のように、リスト内包表記の[...]{...}として、コロン:を使ってキーと値を指定すると、辞書内包表記となる。

また、辞書内包表記ではifif~elseを使うことも可能である。詳細は以下の記事を参照。

Pythonの辞書内包表記

辞書を使ったSerie, DataFrameの作成
#

PandasのSeriesの場合、辞書を引数として渡すと、キーをindexとするSeriesオブジェクトが生成される。

dict1 = {"a": 1, "b": 2, "c":3}
sr1 = pd.Series(dict1)
print(sr1)

実行結果

a    1
b    2
c    3
dtype: int64

一方、PandasのDataFrameの場合、値をリストである辞書を引数として渡すと、キーをcolumnsとするDataFrameオブジェクトが生成される。indexは0, 1, …と整数が割り振られる。

dict2 = {"a": [1, 2], "b": [3, 4], "c":[5, 6]}
df1 = pd.DataFrame(dict2)
print(df1)

実行結果

   a  b  c
0  1  3  5
1  2  4  6

ここで、辞書をDataFrameの引数として直接渡す場合、リストの長さは同じでなければならない。リストの長さが異なる場合にDataFrameを作成したい場合は、以下の記事を参照。 辞書をpd.DataFrameに変換 - Qiita

辞書内包表記を使ったSerie, DataFrameの作成
#

よって、辞書内包表記を使うと、Serie, DataFrameの作成を簡潔に記述できる。 まず、Seriesの例として、偶数を並べた配列を作成する。

sr2 = pd.Series({x: x*2 for x in range(5)})
print(sr2)

実行結果

0    0
1    2
2    4
3    6
4    8
dtype: int64

次に、DataFrameの例として、1行目に2の倍数、2行目に3の倍数を並べた配列を作成する。

df2 = pd.DataFrame({x: [x*2, x*3] for x in range(5)})
print(df2)

実行結果

   0  1  2  3   4
0  0  2  4  6   8
1  0  3  6  9  12

参考
#

Pythonの辞書内包表記 辞書をpd.DataFrameに変換 - Qiita

Helve
著者
Helve
関西在住、電機メーカ勤務のエンジニア。X(旧Twitter)で新着記事を配信中です

関連記事

PandasのSeriesとDataFrameの作成
·1427 文字·3 分
Pandasの基本データ構造であるSeriesとDataFrameの作成方法について述べる。
pandas.Seriesのcorrメソッドで時系列データの相関係数を求める際の注意点
·1294 文字·3 分
pandas.Seriesのcorrメソッドで時系列データの相関係数を求めるときにはshiftメソッドで時刻をずらします。
Pythonの辞書内包表記
·761 文字·2 分
Pythonの辞書内包表記を使って、辞書(dict)型の変数を簡潔に作成する例を示す。
Pythonのデコレータで関数に処理を追加する
·1104 文字·3 分
Pythonで関数の前後に処理を追加する、デコレータと呼ばれる機能について簡単にまとめた。
Pythonとseleniumを使ったブラウザ操作自動化
·2605 文字·6 分
ウェブUIのテストツールであるseleniumを使った、ブラウザ操作の自動化についてまとめた。
Pythonのreモジュールを使った正規表現の基本
·1821 文字·4 分
Pythonのreモジュールの基本的な使い方をまとめた。