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