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

CSV ファイルに書き出す

まずは準備として 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]

なお,CSV ファイルを Visual Studio Code やメモ帳のようなテキストエディタで閲覧すると,次のような中身になっていることが確認できる.

clustering-sample.csvID,x,y
0,7.4346,6.6520
1,6.5419,6.3611
2,8.9819,9.2461
3,3.8554,4.8386
4,1.9527,3.4848
...(中略)...
295,4.1205,1.5010
296,9.2843,1.7563
297,6.6627,7.3856
298,5.7654,6.0543
299,2.2411,1.0902

列 x を2倍,列 y を3倍した列をデータフレームに追加する.

列を追加するdf['double x'] = df['x'] * 2
df['triple y'] = df['y'] * 3
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]

列を追加したデータフレームを df.to_csv() によって CSV ファイルに書き出す.次のようにファイル名だけを指定した場合は,カレントディレクトリに CSV ファイルが書き出される.

CSV ファイルに書き出すdf.to_csv('sample.csv')

上のコードで書き出された CSV ファイルは Visual Studio Code やメモ帳のようなテキストエディタで閲覧することができる.あるいは Excel でも閲覧できる.このとき,インデックスの列が追加されていること,タイトル行が追加されていることに注意する.

sample.csv,ID,x,y,double x,triple y
0,0,7.4346,6.652,14.8692,19.956
1,1,6.5419,6.3611,13.0838,19.0833
2,2,8.9819,9.2461,17.9638,27.738300000000002
3,3,3.8554,4.8386,7.7108,14.515799999999999
4,4,1.9527,3.4848,3.9054,10.4544
...(中略)...
295,295,4.1205,1.501,8.241,4.503
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

インデックスを追加したくない場合は index=False オプションを追加すると良い.

インデックスを追加しないdf.to_csv('sample.csv', index=False)

この場合の出力は次のようになる.

sample.csvID,x,y,double x,triple y
0,7.4346,6.652,14.8692,19.956
1,6.5419,6.3611,13.0838,19.0833
2,8.9819,9.2461,17.9638,27.738300000000002
3,3.8554,4.8386,7.7108,14.515799999999999
4,1.9527,3.4848,3.9054,10.4544
...(中略)...
295,4.1205,1.501,8.241,4.503
296,9.2843,1.7563,18.5686,5.2689
297,6.6627,7.3856,13.3254,22.1568
298,5.7654,6.0543,11.5308,18.1629
299,2.2411,1.0902,4.4822,3.2706

見出し行が不要であれば header=False を指定すると良い.

df.to_csv('sample.csv', index=False, header=False)

この場合の出力は次のようになる.

sample.csv0,7.4346,6.652,14.8692,19.956
1,6.5419,6.3611,13.0838,19.0833
2,8.9819,9.2461,17.9638,27.738300000000002
3,3.8554,4.8386,7.7108,14.515799999999999
4,1.9527,3.4848,3.9054,10.4544
...(中略)...
295,4.1205,1.501,8.241,4.503
296,9.2843,1.7563,18.5686,5.2689
297,6.6627,7.3856,13.3254,22.1568
298,5.7654,6.0543,11.5308,18.1629
299,2.2411,1.0902,4.4822,3.2706

目次に戻る