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