pandas で CSVファイルを取り扱ってみる。
取り扱うデータはこれ。
infile.csv
number,name,birthymd,sex,yubin,adr1,adr2,sinsei_ymd,nintei_ymd,happu_ymd,syurui,pet,test_nowymd
0000111111,安藤 太一郎,19860602,1,1231111,AAA県BBB市CCC-123,サンプルヴィラA 001号室,20190501,20190507,20190507,1,0,20200229
0000222222,伊藤 炭二郎,19920505,1,1232222,AAA県BBB市CCC-123,サンプルヴィラB 002号室,20190501,20190514,20190514,2,1,20200228
0000333333,鵜飼 多三枝,19990909,2,1233333,AAA県BBB市CCC-123,サンプルヴィラC 003号室,20190501,20190514,20190514,1,2,20200131
0000444444,江崎 幸四郎,19870831,1,1234444,AAA県BBB市CCC-123,サンプルヴィラD 004号室,20190501,20190507,20190507,2,0,20191231
0000555555,岡本 小五郎,19520205,1,1235555,AAA県BBB市CCC-123,サンプルヴィラE 005号室,20190601,20190615,20190615,1,2,20191130
0000666666,柿崎 喜六郎,19811030,1,1236666,AAA県BBB市CCC-123,サンプルヴィラF 006号室,20190601,20190608,20190608,1,2,20191129
0000777777,城島 香七子,19721103,2,1237777,AAA県BBB市CCC-123,サンプルヴィラG 007号室,20190601,20190608,20190608,2,1,20191030
0000888888,釘宮 亜八芽,19330303,2,1238888,AAA県BBB市CCC-123,サンプルヴィラH 008号室,20190501,20190507,20190507,1,1,20190401
0000999999,敬堂 勘九郎,19680229,1,1239999,AAA県BBB市CCC-123,サンプルヴィラI 009号室,20190601,20190615,20190615,2,0,20190331
1111000000,小柳 猿十郎,19200222,1,1240000,AAA県BBB市CCC-123,サンプルヴィラJ 010号室,20190501,20190507,20190507,2,1,20190228
1111111111,佐渡 十一郎,19430130,1,1241111,AAA県BBB市CCC-123,サンプルヴィラK 011号室,20190601,20190608,20190608,1,0,20190227
1111222222,宍戸 十二郎,19530301,1,1242222,AAA県BBB市CCC-123,サンプルヴィラL 012号室,20190501,20190507,20190507,2,1,20190131
pandas をインストールした上で、取り込み、表示、出力をしてみる。
pandas_exam_01.py
import pandas as pd
df = pd.read_csv("infile.csv")
print(df)
df.to_csv('outfile2.csv')
表示出力結果
number name birthymd sex yubin adr1 adr2 sinsei_ymd nintei_ymd happu_ymd syurui pet test_nowymd
0 111111 安藤 太一郎 19860602 1 1231111 AAA県BBB市CCC-123 サンプルヴィラA 001号室 20190501 20190507 20190507 1 0 20200229
1 222222 伊藤 炭二郎 19920505 1 1232222 AAA県BBB市CCC-123 サンプルヴィラB 002号室 20190501 20190514 20190514 2 1 20200228
2 333333 鵜飼 多三枝 19990909 2 1233333 AAA県BBB市CCC-123 サンプルヴィラC 003号室 20190501 20190514 20190514 1 2 20200131
3 444444 江崎 幸四郎 19870831 1 1234444 AAA県BBB市CCC-123 サンプルヴィラD 004号室 20190501 20190507 20190507 2 0 20191231
4 555555 岡本 小五郎 19520205 1 1235555 AAA県BBB市CCC-123 サンプルヴィラE 005号室 20190601 20190615 20190615 1 2 20191130
5 666666 柿崎 喜六郎 19811030 1 1236666 AAA県BBB市CCC-123 サンプルヴィラF 006号室 20190601 20190608 20190608 1 2 20191129
6 777777 城島 香七子 19721103 2 1237777 AAA県BBB市CCC-123 サンプルヴィラG 007号室 20190601 20190608 20190608 2 1 20191030
7 888888 釘宮 亜八芽 19330303 2 1238888 AAA県BBB市CCC-123 サンプルヴィラH 008号室 20190501 20190507 20190507 1 1 20190401
8 999999 敬堂 勘九郎 19680229 1 1239999 AAA県BBB市CCC-123 サンプルヴィラI 009号室 20190601 20190615 20190615 2 0 20190331
9 1111000000 小柳 猿十郎 19200222 1 1240000 AAA県BBB市CCC-123 サンプルヴィラJ 010号室 20190501 20190507 20190507 2 1 20190228
10 1111111111 佐渡 十一郎 19430130 1 1241111 AAA県BBB市CCC-123 サンプルヴィラK 011号室 20190601 20190608 20190608 1 0 20190227
11 1111222222 宍戸 十二郎 19530301 1 1242222 AAA県BBB市CCC-123 サンプルヴィラL 012号室 20190501 20190507 20190507 2 1 20190131
index が振られて取り込まれました。
が、number の前ゼロが落ちてます。
こんなときは、read_csv のオプション指定で dtype = 'object' を指定します。
pandas_exam_01.py
import pandas as pd
df = pd.read_csv("infile.csv",dtype = 'object')
print(df)
df.to_csv('outfile2.csv')
表示出力結果
number name birthymd sex yubin adr1 adr2 sinsei_ymd nintei_ymd happu_ymd syurui pet test_nowymd
0 0000111111 安藤 太一郎 19860602 1 1231111 AAA県BBB市CCC-123 サンプルヴィラA 001号室 20190501 20190507 20190507 1 0 20200229
1 0000222222 伊藤 炭二郎 19920505 1 1232222 AAA県BBB市CCC-123 サンプルヴィラB 002号室 20190501 20190514 20190514 2 1 20200228
2 0000333333 鵜飼 多三枝 19990909 2 1233333 AAA県BBB市CCC-123 サンプルヴィラC 003号室 20190501 20190514 20190514 1 2 20200131
3 0000444444 江崎 幸四郎 19870831 1 1234444 AAA県BBB市CCC-123 サンプルヴィラD 004号室 20190501 20190507 20190507 2 0 20191231
4 0000555555 岡本 小五郎 19520205 1 1235555 AAA県BBB市CCC-123 サンプルヴィラE 005号室 20190601 20190615 20190615 1 2 20191130
5 0000666666 柿崎 喜六郎 19811030 1 1236666 AAA県BBB市CCC-123 サンプルヴィラF 006号室 20190601 20190608 20190608 1 2 20191129
6 0000777777 城島 香七子 19721103 2 1237777 AAA県BBB市CCC-123 サンプルヴィラG 007号室 20190601 20190608 20190608 2 1 20191030
7 0000888888 釘宮 亜八芽 19330303 2 1238888 AAA県BBB市CCC-123 サンプルヴィラH 008号室 20190501 20190507 20190507 1 1 20190401
8 0000999999 敬堂 勘九郎 19680229 1 1239999 AAA県BBB市CCC-123 サンプルヴィラI 009号室 20190601 20190615 20190615 2 0 20190331
9 1111000000 小柳 猿十郎 19200222 1 1240000 AAA県BBB市CCC-123 サンプルヴィラJ 010号室 20190501 20190507 20190507 2 1 20190228
10 1111111111 佐渡 十一郎 19430130 1 1241111 AAA県BBB市CCC-123 サンプルヴィラK 011号室 20190601 20190608 20190608 1 0 20190227
11 1111222222 宍戸 十二郎 19530301 1 1242222 AAA県BBB市CCC-123 サンプルヴィラL 012号室 20190501 20190507 20190507 2 1 20190131
number の前ゼロ落ちなく取り込めました。
生年月日(birthymd)でソートしてみます。
ソートするには、 sort_values(['ソートしたい項目名']) で指定します。
pandas_exam_01.py
import pandas as pd
df = pd.read_csv("infile.csv",dtype = 'object')
df_sort = df.sort_values(['birthymd'])
print(df_sort)
df_sort.to_csv('outfile2.csv')
number name birthymd sex yubin adr1 adr2 sinsei_ymd nintei_ymd happu_ymd syurui pet test_nowymd
9 1111000000 小柳 猿十郎 19200222 1 1240000 AAA県BBB市CCC-123 サンプルヴィラJ 010号室 20190501 20190507 20190507 2 1 20190228
7 0000888888 釘宮 亜八芽 19330303 2 1238888 AAA県BBB市CCC-123 サンプルヴィラH 008号室 20190501 20190507 20190507 1 1 20190401
10 1111111111 佐渡 十一郎 19430130 1 1241111 AAA県BBB市CCC-123 サンプルヴィラK 011号室 20190601 20190608 20190608 1 0 20190227
4 0000555555 岡本 小五郎 19520205 1 1235555 AAA県BBB市CCC-123 サンプルヴィラE 005号室 20190601 20190615 20190615 1 2 20191130
11 1111222222 宍戸 十二郎 19530301 1 1242222 AAA県BBB市CCC-123 サンプルヴィラL 012号室 20190501 20190507 20190507 2 1 20190131
8 0000999999 敬堂 勘九郎 19680229 1 1239999 AAA県BBB市CCC-123 サンプルヴィラI 009号室 20190601 20190615 20190615 2 0 20190331
6 0000777777 城島 香七子 19721103 2 1237777 AAA県BBB市CCC-123 サンプルヴィラG 007号室 20190601 20190608 20190608 2 1 20191030
5 0000666666 柿崎 喜六郎 19811030 1 1236666 AAA県BBB市CCC-123 サンプルヴィラF 006号室 20190601 20190608 20190608 1 2 20191129
0 0000111111 安藤 太一郎 19860602 1 1231111 AAA県BBB市CCC-123 サンプルヴィラA 001号室 20190501 20190507 20190507 1 0 20200229
3 0000444444 江崎 幸四郎 19870831 1 1234444 AAA県BBB市CCC-123 サンプルヴィラD 004号室 20190501 20190507 20190507 2 0 20191231
1 0000222222 伊藤 炭二郎 19920505 1 1232222 AAA県BBB市CCC-123 サンプルヴィラB 002号室 20190501 20190514 20190514 2 1 20200228
2 0000333333 鵜飼 多三枝 19990909 2 1233333 AAA県BBB市CCC-123 サンプルヴィラC 003号室 20190501 20190514 20190514 1 2 20200131
性別ごとに、氏名でソートしてみます。
pandas_exam_01.py
import pandas as pd
df = pd.read_csv("infile.csv",dtype = 'object')
df_sort2 = df.sort_values(['sex','name'])
print(df_sort2)
df_sort2.to_csv('outfile2.csv')
number name birthymd sex yubin adr1 adr2 sinsei_ymd nintei_ymd happu_ymd syurui pet test_nowymd
1 0000222222 伊藤 炭二郎 19920505 1 1232222 AAA県BBB市CCC-123 サンプルヴィラB 002号室 20190501 20190514 20190514 2 1 20200228
10 1111111111 佐渡 十一郎 19430130 1 1241111 AAA県BBB市CCC-123 サンプルヴィラK 011号室 20190601 20190608 20190608 1 0 20190227
0 0000111111 安藤 太一郎 19860602 1 1231111 AAA県BBB市CCC-123 サンプルヴィラA 001号室 20190501 20190507 20190507 1 0 20200229
11 1111222222 宍戸 十二郎 19530301 1 1242222 AAA県BBB市CCC-123 サンプルヴィラL 012号室 20190501 20190507 20190507 2 1 20190131
9 1111000000 小柳 猿十郎 19200222 1 1240000 AAA県BBB市CCC-123 サンプルヴィラJ 010号室 20190501 20190507 20190507 2 1 20190228
4 0000555555 岡本 小五郎 19520205 1 1235555 AAA県BBB市CCC-123 サンプルヴィラE 005号室 20190601 20190615 20190615 1 2 20191130
8 0000999999 敬堂 勘九郎 19680229 1 1239999 AAA県BBB市CCC-123 サンプルヴィラI 009号室 20190601 20190615 20190615 2 0 20190331
5 0000666666 柿崎 喜六郎 19811030 1 1236666 AAA県BBB市CCC-123 サンプルヴィラF 006号室 20190601 20190608 20190608 1 2 20191129
3 0000444444 江崎 幸四郎 19870831 1 1234444 AAA県BBB市CCC-123 サンプルヴィラD 004号室 20190501 20190507 20190507 2 0 20191231
6 0000777777 城島 香七子 19721103 2 1237777 AAA県BBB市CCC-123 サンプルヴィラG 007号室 20190601 20190608 20190608 2 1 20191030
7 0000888888 釘宮 亜八芽 19330303 2 1238888 AAA県BBB市CCC-123 サンプルヴィラH 008号室 20190501 20190507 20190507 1 1 20190401
2 0000333333 鵜飼 多三枝 19990909 2 1233333 AAA県BBB市CCC-123 サンプルヴィラC 003号室 20190501 20190514 20190514 1 2 20200131
漢字氏名がうまく並んでいません。
漢字項目でのソートはうまく並ばないみたいですね。
カナ氏名を追加した別のファイル infile2.csv を用いて、再度ソート処理してみます。
infile2.csv
number,name,name_kana,birthymd,sex,yubin,adr1,adr2,sinsei_ymd,nintei_ymd,happu_ymd,syurui,pet,test_nowymd
0000111111,安藤 太一郎,アンドウ タイチロウ,19860602,1,1231111,AAA県BBB市CCC-123,サンプルヴィラA 001号室,20190501,20190507,20190507,1,0,20200229
0000222222,伊藤 炭二郎,イトウ タンジロウ,19920505,1,1232222,AAA県BBB市CCC-123,サンプルヴィラB 002号室,20190501,20190514,20190514,2,1,20200228
0000333333,鵜飼 多三枝,ウカイ タミエ,19990909,2,1233333,AAA県BBB市CCC-123,サンプルヴィラC 003号室,20190501,20190514,20190514,1,2,20200131
0000444444,江崎 幸四郎,エザキ コウシロウ,19870831,1,1234444,AAA県BBB市CCC-123,サンプルヴィラD 004号室,20190501,20190507,20190507,2,0,20191231
0000555555,岡本 小五郎,オカモト コゴロウ,19520205,1,1235555,AAA県BBB市CCC-123,サンプルヴィラE 005号室,20190601,20190615,20190615,1,2,20191130
0000666666,柿崎 喜六郎,カキザキ キロクロウ,19811030,1,1236666,AAA県BBB市CCC-123,サンプルヴィラF 006号室,20190601,20190608,20190608,1,2,20191129
0000777777,城島 香七子,キジマ カナコ,19721103,2,1237777,AAA県BBB市CCC-123,サンプルヴィラG 007号室,20190601,20190608,20190608,2,1,20191030
0000888888,釘宮 亜八芽,クギミヤ アヤメ,19330303,2,1238888,AAA県BBB市CCC-123,サンプルヴィラH 008号室,20190501,20190507,20190507,1,1,20190401
0000999999,敬堂 勘九郎,ケイドウ カンクロウ,19680229,1,1239999,AAA県BBB市CCC-123,サンプルヴィラI 009号室,20190601,20190615,20190615,2,0,20190331
1111000000,小柳 猿十郎,コヤナギ エンジュウロウ,19200222,1,1240000,AAA県BBB市CCC-123,サンプルヴィラJ 010号室,20190501,20190507,20190507,2,1,20190228
1111111111,佐渡 十一郎,サワタリ ジュウイチロウ,19430130,1,1241111,AAA県BBB市CCC-123,サンプルヴィラK 011号室,20190601,20190608,20190608,1,0,20190227
1111222222,宍戸 十二郎,シシド ジュウジロウ,19530301,1,1242222,AAA県BBB市CCC-123,サンプルヴィラL 012号室,20190501,20190507,20190507,2,1,20190131
pandas_exam_01.py
import pandas as pd
df = pd.read_csv("infile2.csv",dtype = 'object')
df_sort2 = df.sort_values(['sex','name_kana'])
print(df_sort2)
df_sort2.to_csv('outfile2.csv')
number name name_kana birthymd sex yubin adr1 adr2 sinsei_ymd nintei_ymd happu_ymd syurui pet test_nowymd
0 0000111111 安藤 太一郎 アンドウ タイチロウ 19860602 1 1231111 AAA県BBB市CCC-123 サンプルヴィラA 001号室 20190501 20190507 20190507 1 0 20200229
1 0000222222 伊藤 炭二郎 イトウ タンジロウ 19920505 1 1232222 AAA県BBB市CCC-123 サンプルヴィラB 002号室 20190501 20190514 20190514 2 1 20200228
3 0000444444 江崎 幸四郎 エザキ コウシロウ 19870831 1 1234444 AAA県BBB市CCC-123 サンプルヴィラD 004号室 20190501 20190507 20190507 2 0 20191231
4 0000555555 岡本 小五郎 オカモト コゴロウ 19520205 1 1235555 AAA県BBB市CCC-123 サンプルヴィラE 005号室 20190601 20190615 20190615 1 2 20191130
5 0000666666 柿崎 喜六郎 カキザキ キロクロウ 19811030 1 1236666 AAA県BBB市CCC-123 サンプルヴィラF 006号室 20190601 20190608 20190608 1 2 20191129
8 0000999999 敬堂 勘九郎 ケイドウ カンクロウ 19680229 1 1239999 AAA県BBB市CCC-123 サンプルヴィラI 009号室 20190601 20190615 20190615 2 0 20190331
9 1111000000 小柳 猿十郎 コヤナギ エンジュウロウ 19200222 1 1240000 AAA県BBB市CCC-123 サンプルヴィラJ 010号室 20190501 20190507 20190507 2 1 20190228
10 1111111111 佐渡 十一郎 サワタリ ジュウイチロウ 19430130 1 1241111 AAA県BBB市CCC-123 サンプルヴィラK 011号室 20190601 20190608 20190608 1 0 20190227
11 1111222222 宍戸 十二郎 シシド ジュウジロウ 19530301 1 1242222 AAA県BBB市CCC-123 サンプルヴィラL 012号室 20190501 20190507 20190507 2 1 20190131
2 0000333333 鵜飼 多三枝 ウカイ タミエ 19990909 2 1233333 AAA県BBB市CCC-123 サンプルヴィラC 003号室 20190501 20190514 20190514 1 2 20200131
6 0000777777 城島 香七子 キジマ カナコ 19721103 2 1237777 AAA県BBB市CCC-123 サンプルヴィラG 007号室 20190601 20190608 20190608 2 1 20191030
7 0000888888 釘宮 亜八芽 クギミヤ アヤメ 19330303 2 1238888 AAA県BBB市CCC-123 サンプルヴィラH 008号室 20190501 20190507 20190507 1 1 20190401
性別(1:男、2:女) > カナ氏名(アイウエオ順) で並びました。