非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】Pandas/DataFrameの基礎をおさえておく

   

Excelファイルやcsvファイルを扱う際にPandasをよく使うのですが、その流れでDataFrameをなんとなく使ってきました。ここいらでDataFrameの基礎を押さえようと思いました。

基本形

import pandas as pd

d = [['岡部 祐二', '64', '男', '050-3888-0689'],
      ['今関 卓也', '45', '男', '070-0549-9317'],
      ['弓削 良平', '80', '男', '090-5861-4371'],
      ['荒木 崇', '44', '男', '090-0495-9588'],
      ['小川 英樹', '61', '男', '080-0749-9035']]

data = pd.DataFrame(data=d)
print(data)

#       0         1   2              3
#  0  岡部 祐二  64  男  050-3888-0689
#  1  今関 卓也  45  男  070-0549-9317
#  2  弓削 良平  80  男  090-5861-4371
#  3  荒木 崇    44  男  090-0495-9588
#  4  小川 英樹  61  男  080-0749-9035
 

 

ヘッダーを設定する方法

もしヘッダー行に題名を入れたい場合はcolumnsキーワードでヘッダー情報を渡します。※import文、変数dの定義は省略。上記コード参照。

header = ['名前', '年齢', '性別', '携帯番号']
data = pd.DataFrame(data=d, columns=header)
print(data)

#       名前   年齢 性別       携帯番号
# 0  岡部 祐二   64   男  050-3888-0689
# 1  今関 卓也   45   男  070-0549-9317
# 2  弓削 良平   80   男  090-5861-4371
# 3  荒木 崇     44   男  090-0495-9588
# 4  小川 英樹   61   男  080-0749-9035
 

 

あとから追加する方法でもOKです。

data.columns = header
 

 

インデックス(行名)を設定する方法

※import文、変数dの定義は省略。上記コード参照。

header = ['名前', '年齢', '性別', '携帯番号']
index = ['M001','M002','M003','M004','M005']
data = pd.DataFrame(data=d, columns=header)
print(data)

#          名前   年齢 性別       携帯番号
# M001  岡部 祐二   64   男  050-3888-0689
# M002  今関 卓也   45   男  070-0549-9317
# M003  弓削 良平   80   男  090-5861-4371
# M004  荒木 崇     44   男  090-0495-9588
# M005  小川 英樹   61   男  080-0749-9035
 

 

あとから追加する方法でもOKです。

data.index = index
 

 

列を追加する方法

import pandas as pd

d = [['岡部 祐二', '64', '男', '050-3888-0689'],
      ['今関 卓也', '45', '男', '070-0549-9317'],
      ['弓削 良平', '80', '男', '090-5861-4371'],
      ['荒木 崇', '44', '男', '090-0495-9588'],
      ['小川 英樹', '61', '男', '080-0749-9035']]
header = ['名前', '年齢', '性別', '携帯番号']

data = pd.DataFrame(data=d, columns=header)
campany = ['株式会社スター', '株式会社グリーン', '株式会社ワールド', '株式会社エムレッド', '株式会社エフグリーン']
data['会社名'] = campany

print(data)

#       名前  年齢 性別      携帯番号         会社名
# 0  岡部 祐二  64  男  050-3888-0689  株式会社スター
# 1  今関 卓也  45  男  070-0549-9317  株式会社グリーン
# 2  弓削 良平  80  男  090-5861-4371  株式会社ワールド
# 3   荒木 崇   44  男  090-0495-9588  株式会社エムレッド
# 4  小川 英樹  61  男  080-0749-9035  株式会社エフグリーン
 

 

行を追加する方法

追加する配列d2は2次元配列であることに注意。

import pandas as pd

d = [['岡部 祐二', '64', '男', '050-3888-0689'],
      ['今関 卓也', '45', '男', '070-0549-9317'],
      ['弓削 良平', '80', '男', '090-5861-4371'],
      ['荒木 崇', '44', '男', '090-0495-9588'],
      ['小川 英樹', '61', '男', '080-0749-9035']]
header = ['名前', '年齢', '性別', '携帯番号']

data = pd.DataFrame(data=d, columns=header)
d2 = [['森下 浩', '45', '男', '050-7947-2195']]
new = pd.DataFrame(d2, columns=header)
data = pd.concat([data, new], axis=0)
print(data)

#       名前   年齢 性別       携帯番号
# 0  岡部 祐二   64   男  050-3888-0689
# 1  今関 卓也   45   男  070-0549-9317
# 2  弓削 良平   80   男  090-5861-4371
# 3  荒木 崇     44   男  090-0495-9588
# 4  小川 英樹   61   男  080-0749-9035
# 0  森下 浩     45   男  050-7947-2195

 




スポンサーリンク

 - Python