Pandas の DataFrame を CSV に書き込む
- 
          
            pandas.DataFrame.to_csv()関数の構文
- 
          
            関数 pandas.DataFrame.to_csv()を用いて DataFrame を CSV ファイルに書き込む
- 
          
            インデックスを無視して pandas.DataFrame.to_csv()関数を使用してデータフレームを CSV ファイルに書き込む
- 
          
            関数 pandas.DataFrame.to_csv()にセパレータを指定する
 
このチュートリアルでは、pandas.DataFrame.to_csv() 関数を使って、DataFrame を CSV ファイルに書き込む方法を説明します。関数 pandas.DataFrame.to_csv() は DataFrame のエントリを CSV ファイルに書き込みます。
pandas.DataFrame.to_csv() 関数の構文
    
pandas.DataFrame.to_csv(
    path_or_buf=None,
    sep=",",
    na_rep="",
    float_format=None,
    columns=None,
    header=True,
    index=True,
    index_label=None,
    mode="w",
    encoding=None,
    compression="infer",
    quoting=None,
    quotechar='""',
    line_terminator=None,
    chunksize=None,
    date_format=None,
    doublequote=True,
    escapechar=None,
    decimal=".",
)
関数 pandas.DataFrame.to_csv() を用いて DataFrame を CSV ファイルに書き込む
    
import pandas as pd
mid_term_marks = {
    "Student": ["Kamal", "Arun", "David", "Thomas", "Steven"],
    "Economics": [10, 8, 6, 5, 8],
    "Fine Arts": [7, 8, 5, 9, 6],
    "Mathematics": [7, 3, 5, 8, 5],
}
mid_term_marks_df = pd.DataFrame(mid_term_marks)
print(mid_term_marks_df)
出力:
  Student  Economics  Fine Arts  Mathematics
0   Kamal         10          7            7
1    Arun          8          8            3
2   David          6          5            5
3  Thomas          5          9            8
4  Steven          8          6            5
次に、DataFrame mid_term_marks_df を CSV ファイルに書き込みます。
import pandas as pd
mid_term_marks = {
    "Student": ["Kamal", "Arun", "David", "Thomas", "Steven"],
    "Economics": [10, 8, 6, 5, 8],
    "Fine Arts": [7, 8, 5, 9, 6],
    "Mathematics": [7, 3, 5, 8, 5],
}
mid_term_marks_df = pd.DataFrame(mid_term_marks)
mid_term_marks_df.to_csv("midterm.csv")
midterm.csv というファイルを作成し、行内の隣接する値をカンマ , で区切ったファイルに DataFrame の値を書き込みます。
midterm.csv ファイルの内容は以下のようになります。
,Student,Economics,Fine Arts,Mathematics
0,Kamal,10,7,7
1,Arun,8,8,3
2,David,6,5,5
3,Thomas,5,9,8
4,Steven,8,6,5
デフォルトでは、pandas.DataFrame.to_csv() 関数は DataFrame のインデックスも CSV に書き込みますが、インデックスが必ずしも有用とは限りません。
インデックスを無視して pandas.DataFrame.to_csv() 関数を使用してデータフレームを CSV ファイルに書き込む
インデックスを無視するには、関数 pandas.DataFrame.to_csv() で index=False を指定します。
import pandas as pd
mid_term_marks = {
    "Student": ["Kamal", "Arun", "David", "Thomas", "Steven"],
    "Economics": [10, 8, 6, 5, 8],
    "Fine Arts": [7, 8, 5, 9, 6],
    "Mathematics": [7, 3, 5, 8, 5],
}
mid_term_marks_df = pd.DataFrame(mid_term_marks)
mid_term_marks_df.to_csv("midterm.csv", index=False)
この場合、midterm.csv ファイルの内容は midterm.csv となります。
Student,Economics,Fine Arts,Mathematics
Kamal,10,7,7
Arun,8,8,3
David,6,5,5
Thomas,5,9,8
Steven,8,6,5
DataFrame の内容を CSV ファイルに書き込む際に UnicodeEncodeError が発生することがあります。そのような場合は、encoding='utf-8'を設定することで utf-8 のエンコーディング形式を有効にすることができます。
関数 pandas.DataFrame.to_csv() にセパレータを指定する
デフォルトでは、DataFrame を CSV ファイルに書き込むとき、値はカンマで区切られます。その他の記号を区切り文字として使用したい場合は、sep パラメータで指定します。
import pandas as pd
mid_term_marks = {
    "Student": ["Kamal", "Arun", "David", "Thomas", "Steven"],
    "Economics": [10, 8, 6, 5, 8],
    "Fine Arts": [7, 8, 5, 9, 6],
    "Mathematics": [7, 3, 5, 8, 5],
}
mid_term_marks_df = pd.DataFrame(mid_term_marks)
mid_term_marks_df.to_csv("midterm.csv", index=False, sep="\t")
この場合、midterm.csv ファイルの内容は以下のようになります。
Student Economics Fine Arts Mathematics
Kamal 10  7 7
Arun  8 8 3
David 6 5 5
Thomas  5 9 8
Steven  8 6 5
ここでは値はタブで区切られています。
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn