Help us understand the problem. What is going on with this article?

pandasでCSVファイルを取り扱う(取込、出力、ソート)

More than 1 year has passed since last update.

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:女) > カナ氏名(アイウエオ順) で並びました。

sejiijes
COBOL介護士。週末にPythonを実務使用できないかゴニョゴニョしています。 実務ではCOBOL/Java/SQL/HTML/Python とか。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away