pandas:【縦横の方向を考えた】データフレーム作成


前提

  • Python
    • ディクショナリ
    • リスト
    • タプル

サンプルコード

例1:列を作っていく

概要

  • ディクショナリデータ作成
    • ディクショナリ>リスト(タプル)
  • ディクショナリからデータフレーム作成
  • データフレームデータを使ってMatplotlib表示

データ作成

import pandas as pd
dic = {'a':[1,2,3],'b':[4,5,6],'c':(7,8,9)}
print(dic)
print(dic['a'])
print(dic['b'])
print(dic['c'])
{'a': [1, 2, 3], 'b': [4, 5, 6], 'c': (7, 8, 9)}
[1, 2, 3]
[4, 5, 6]
(7, 8, 9)
  • 「リスト>ディクショナリ」の形
  • ディクショナリ内のデータタイプ
    • リスト …… OK
    • タプル …… OK

データフレーム作成

df =pd.DataFrame(dic)
print(df)
print(type(df))
   a  b  c
0  1  4  7
1  2  5  8
2  3  6  9
<class 'pandas.core.frame.DataFrame'>
  • データフレームが作成された
    • 左の列から順に埋めていくような感じ
  • データタイプが「DtataFrame」になっていることを確認

データフレームデータを使ってMatplotlib表示

import matplotlib.pyplot as plt
x = df['a']
y = df['b']
print(x)
print(y)
plt.plot(x, y)
plt.show()
0    1
1    2
2    3
Name: a, dtype: int64
0    4
1    5
2    6
Name: b, dtype: int64
  • 問題なく表示される
    • (x,y)={(1,4), (2,5), (3,6)}の3点を結んだ線分
  • dfの1列目はインデックス番号なので、グラフ表示には使われない
pandasデータの表示結果

例2:行を作っていく

概要

  • ディクショナリデータ作成
    • リスト>ディクショナリ
  • ディクショナリからデータフレーム作成

データ作成

import pandas as pd
history=[]
info ={}
info['train_loss']=1.2
info['val_loss']=2.3
info['train_acc']=0.2356
info['val_acc']=0.5124
info['epoch']=13
history.append(info) #1回目追加
info ={}
info['train_loss']=1.3
info['val_loss']=2.4
info['train_acc']=0.3356
info['val_acc']=0.6124
info['epoch']=14
history.append(info) #2回目追加
print(history)
print(history[0])
print(history[0]['train_loss'])
[{'train_loss': 1.2, 'val_loss': 2.3, 'train_acc': 0.2356, 'val_acc': 0.5124, 'epoch': 13}, {'train_loss': 1.3, 'val_loss': 2.4, 'train_acc': 0.3356, 'val_acc': 0.6124, 'epoch': 14}]
{'train_loss': 1.2, 'val_loss': 2.3, 'train_acc': 0.2356, 'val_acc': 0.5124, 'epoch': 13}
1.2
  • 「リスト>ディクショナリ」の形

データフレーム作成

df = pd.DataFrame(history)
print(df)
print(type(df))
   train_loss  val_loss  train_acc  val_acc  epoch
0         1.2       2.3     0.2356   0.5124     13
1         1.3       2.4     0.3356   0.6124     14
<class 'pandas.core.frame.DataFrame'>
  • データフレームが作成された
    • 上の行から順に埋めていくような感じ
  • データタイプが「DtataFrame」になっていることを確認

列表示

a = df['epoch']
print(a)
0    13
1    14
Name: epoch, dtype: int64
  • 列データの表示が確認できた

データフレームデータを使ってMatplotlib表示

import matplotlib.pyplot as plt
x = df['epoch']
y = df['train_acc']
print(x)
print(y)
plt.plot(x, y)
plt.show()
0    13
1    14
Name: epoch, dtype: int64
0    0.2356
1    0.3356
Name: train_acc, dtype: float64
  • 問題なく表示される
    • (x,y)={(13, 0.2356), (14, 0.3356)}の2点を結んだ線分
  • dfの1列目はインデックス番号なので、グラフ表示には使われない
pandasデータの表示


Posted by futa