Pythonの言語は、今ではEXCELでも利用できるようになっています。
EXCELでのPython利用は、基本的にはデータ分析の分野で利用することになるでしょう。
そのため、Pythonを利用せずとも、EXCELでも同様のことはできるのですが、大量のデータを扱う際など、Pythonを使用した方が楽なケースもあるかもしれません。
そこで今回は、Pythonのライブラリの中でも、「データフレーム」という形で「データ」を扱える「Pandas」のメソッドについて、まとめようと思います。
リスト型/辞書型とデータフレーム型
リスト型とPandasのデータフレーム型は、互いに行き来することが可能です。
その方法を記載します。
リスト型から、データフレーム作成
リスト型のデータを持つ辞書型をDataFrame関数の引数に渡すことで、データフレームを生成することになります。
いくつかの実例を、以下にまとめます。
基本形
以下のコードでは、「names」「ages」という名称のリストから、データフレーム:dfを作成しています。
その際に、関数「pd.DataFrame」の引数として渡す際に、「Name」「Age」をキーとした辞書型で代入しています。
そして、それぞれのキーを列名とし、リスト型のデータが対応する列の値となっています。
コードサンプル:
import pandas as pd
names = [‘田中’, ‘山田’, ‘高橋’] ages = [25, 30, 35]
df = pd.DataFrame({‘Name’: names, ‘Age’: ages})
print(df)
実行結果:
Name Age
0 田中 25
1 山田 30
2 高橋 35
辞書型からデータフレーム(基本形)
以下のように、初めから辞書のデータを作成し、代入してしまうことも可能です。
コードサンプル:
import pandas as pd
data = {
‘氏名’ :[‘田中’, ‘山田’, ‘高橋’],
‘役職’ : [‘部長’, ‘課長’, ‘係長’],
‘身長’ : [175, 170, 165]}
df = pd.DataFrame(data)
print(df)
実行結果:
氏名 役職 身長
0 田中 部長 175
1 山田 課長 170
2 高橋 係長 165
辞書型からデータフレーム(辞書から利用する列を限定)
データフレームの定義の際に、以下のようにデータフレームを構成する内容を限定することも可能です。
以下では、定義した「氏名」「役職」「身長」のうち、「氏名」と「身長」のみを利用してデータフレームを作成しています。
コードサンプル:
import pandas as pd
data = {
‘氏名’ :[‘田中’, ‘山田’, ‘高橋’],
‘役職’ : [‘部長’, ‘課長’, ‘係長’],
‘身長’ : [175, 170, 165]}
df = pd.DataFrame(data, columns=[“氏名”, “身長”])
print(df)
実行結果:
氏名 身長
0 田中 175
1 山田 170
2 高橋 165
なお、データフレーム生成時に対応するキーを持っていない場合、そのデータの列の値にはNaNが割り当てられます。
以下では、一例として、「役職」の代わりに、存在しない「グレード」に置き換えています。
コードサンプル(対象のキーがない場合):
import pandas as pd
data = {
‘氏名’ :[‘田中’, ‘山田’, ‘高橋’],
‘役職’ : [‘部長’, ‘課長’, ‘係長’],
‘身長’ : [175, 170, 165]}
df = pd.DataFrame(data, columns=[“氏名”, “グレード”, “身長”])
print(df)
実行結果(対象のキーがない場合):
氏名 グレード 身長
0 田中 NaN 175
1 山田 NaN 170
2 高橋 NaN 165
辞書型からデータフレーム(列名変更)
データフレームを定義時に列名を変更することも可能です。
以下では、日本語の列名から、英語の列名に置き換えています。
コードサンプル:
import pandas as pd
data = {
‘氏名’ :[‘田中’, ‘山田’, ‘高橋’],
‘役職’ : [‘部長’, ‘課長’, ‘係長’],
‘身長’ : [175, 170, 165]}
df = pd.DataFrame(data, columns=[“氏名”, “役職”, “身長”])
df.columns = [“Name”, “Position”, “height”]print(df)
実行結果:
Name Position height
0 田中 部長 175
1 山田 課長 170
2 高橋 係長 165
ネスト化されたリストからデータフレーム
もちろんネスト構造のリストからデータフレームを作成することもできます。
コードサンプル:
import pandas as pd
data = [[‘田中’, 25], [‘山田’, 30], [‘高橋’, 35]] df = pd.DataFrame(data)
print(df)
実行結果:
0 1
0 田中 25
1 山田 30
2 高橋 35
この時、列名を指定しないと、上記の結果のように、列が「0」「1」のように数字になってしまいます。
そのため、列名を指定したいときは、以下のように記載して下さい。
コードサンプル(列名指定):
import pandas as pd
data = [[‘田中’, 25], [‘山田’, 30], [‘高橋’, 35]]
df = pd.DataFrame(data, columns=[‘Name’, ‘Age’])
print(df)
実行結果(列名指定):
Name Age
0 田中 25
1 山田 30
2 高橋 35
データフレームからリストを作成
データフレーム型のデータから特定の列を抽出する方法で、リスト型を生成することになります。
以下に実例を、記載します。
コードサンプル:
import pandas as pd
df = pd.DataFrame({
‘氏名’ :[‘田中’, ‘山田’, ‘高橋’],
‘年齢’ : [25, 30, 35]})
name_list = df[‘氏名’].tolist()
hight_list = df[‘年齢’].tolist()
print(df)
print(”)
print(name_list)
print(”)
print(hight_list)
実行結果:
氏名 年齢
0 田中 25
1 山田 30
2 高橋 35
[‘田中’, ‘山田’, ‘高橋’]
[25, 30, 35]
まとめ
今回は、Pythonで扱えるライブラリの「Pandas」において、「リスト型/辞書型から、データフレーム型を作成する方法」および、「データフレーム型からリスト型を作成する方法」について記載しました。
Pandasは、Pythonのデータ処理に関わるライブラリで、EXCELなどでも利用できるようになります。
ぜひ、参考にしてみて下さい。