Python入門トップページ


目次

  1. Pandas とは
  2. Pandas を利用するための準備
  3. CSV ファイルを読み込む
  4. DataFrame を表示する
  5. 列や行を抽出する
  6. 列名を抽出する
  7. Python リストに変換する
  8. Python リストから DataFrame に変換する
  9. DataFrame から NumPy 配列に変換する
  10. 基本統計量を出力する
  11. CSV ファイルに書き出す
  12. グループ化とピボットテーブル
  13. データフレームの結合(系列名が等しいとき)
  14. データフレームの結合(系列名が異なるとき)
  15. データフレームの連結

Pandas

Python リストから DataFrame に変換する

Python のリストを Pandas の DataFrame に追加したり,新たな DataFrame を作ってみよう.

まずは準備として GitHub のリポジトリにあるサンプルデータ (clustering-sample.csv) を読み込みます.

CSV ファイルを読み込む
import pandas as pd
url = "https://github.com/rinsaka/sample-data-sets/blob/master/clustering-sample.csv?raw=true"
df = pd.read_csv(url)
print(df)
      ID       x       y
0      0  7.4346  6.6520
1      1  6.5419  6.3611
2      2  8.9819  9.2461
3      3  3.8554  4.8386
4      4  1.9527  3.4848
..   ...     ...     ...
295  295  4.1205  1.5010
296  296  9.2843  1.7563
297  297  6.6627  7.3856
298  298  5.7654  6.0543
299  299  2.2411  1.0902

[300 rows x 3 columns]

データフレームをリストに変換します.

リストに変換
x = df['x'].tolist()
y = df['y'].tolist()
print(x)
print(y)
[7.4346, 6.5419, 8.9819, 3.8554, 1.9527, ...(中略)..., 4.1205, 9.2843, 6.6627, 5.7654, 2.2411]
[6.652, 6.3611, 9.2461, 4.8386, 3.4848, ...(中略)..., 1.501, 1.7563, 7.3856, 6.0543, 1.0902]

内包表記を用いてリストの内容を2倍や3倍した新たなリストを作成します.

リスト x を2倍, y を3倍する
double_x = [v * 2 for v in x]
triple_y = [v * 3 for v in y]
print(double_x)
print(triple_y)
[14.8692, 13.0838, 17.9638, 7.7108, 3.9054, ...(中略)..., 8.241, 18.5686, 13.3254, 11.5308, 4.4822]
[19.956, 19.0833, 27.738300000000002, 14.515799999999999, 10.4544 ...(中略)..., 4.503, 5.2689, 22.1568, 18.1629, 3.2706]

準備ができたので,データフレームにリストを追加してみよう.

データフレームにリストを追加する
df['double x'] = double_x
print(df)
      ID       x       y  double x
0      0  7.4346  6.6520   14.8692
1      1  6.5419  6.3611   13.0838
2      2  8.9819  9.2461   17.9638
3      3  3.8554  4.8386    7.7108
4      4  1.9527  3.4848    3.9054
..   ...     ...     ...       ...
295  295  4.1205  1.5010    8.2410
296  296  9.2843  1.7563   18.5686
297  297  6.6627  7.3856   13.3254
298  298  5.7654  6.0543   11.5308
299  299  2.2411  1.0902    4.4822

[300 rows x 4 columns]

もう1列データフレームにリストを追加しよう.

データフレームにリストを追加する
df['triple_y'] = triple_y
print(df)
      ID       x       y  double x  triple y
0      0  7.4346  6.6520   14.8692   19.9560
1      1  6.5419  6.3611   13.0838   19.0833
2      2  8.9819  9.2461   17.9638   27.7383
3      3  3.8554  4.8386    7.7108   14.5158
4      4  1.9527  3.4848    3.9054   10.4544
..   ...     ...     ...       ...       ...
295  295  4.1205  1.5010    8.2410    4.5030
296  296  9.2843  1.7563   18.5686    5.2689
297  297  6.6627  7.3856   13.3254   22.1568
298  298  5.7654  6.0543   11.5308   18.1629
299  299  2.2411  1.0902    4.4822    3.2706

[300 rows x 5 columns]

なお,別途リストを準備することなく,データフレームのある列を用いて新たな列を追加することも可能です.例えば「x」列の平方根を計算して「sqrt x」列を追加します.

データフレームに列を追加する
import numpy as np
df['sqrt x'] = np.sqrt(df['x'])
print(df)
      ID       x       y  double x  triple y    sqrt x
0      0  7.4346  6.6520   14.8692   19.9560  2.726646
1      1  6.5419  6.3611   13.0838   19.0833  2.557714
2      2  8.9819  9.2461   17.9638   27.7383  2.996982
3      3  3.8554  4.8386    7.7108   14.5158  1.963517
4      4  1.9527  3.4848    3.9054   10.4544  1.397390
..   ...     ...     ...       ...       ...       ...
295  295  4.1205  1.5010    8.2410    4.5030  2.029901
296  296  9.2843  1.7563   18.5686    5.2689  3.047015
297  297  6.6627  7.3856   13.3254   22.1568  2.581221
298  298  5.7654  6.0543   11.5308   18.1629  2.401125
299  299  2.2411  1.0902    4.4822    3.2706  1.497030

[300 rows x 6 columns]

リストから新たなデータフレームを作成する場合は次のように記述します.

リストから新たなデータフレームを作成する
new_df = pd.DataFrame({'double x':double_x, 'triple y':triple_y})
print(new_df)
     double x  triple y
0     14.8692   19.9560
1     13.0838   19.0833
2     17.9638   27.7383
3      7.7108   14.5158
4      3.9054   10.4544
..        ...       ...
295    8.2410    4.5030
296   18.5686    5.2689
297   13.3254   22.1568
298   11.5308   18.1629
299    4.4822    3.2706

[300 rows x 2 columns]

目次に戻る