read_csvpandaspandasでcsvをDataFrameとして読み込めるととっても便利ですよね。読み込むだけでなく、indexや読み込む行列を指定したり、欠損値を処理したりいろんなことができるとなお便利です。そこで、この記事では読み込みで使うread_csv関数の引数を目的別に解説していこうと思います。values(カンマセパレーティッドバリュー)のことで、カンマで値を区切って書かれてたものになります。このように、データを区切っている文字のことを「区切り文字」いいます。ほかにも、タブ文字で区切ったり(tsv)スペース文字で区切ったり(ssv)セミコロン(;)を使っているものもあります。以下のcsvファイルを使って開いてみます。csvのファイルパスやURLを渡します。区切り文字を渡しますが、csvの読み込みなら変更する必要はありません。必要ならsepを変更しましょう。'」など)を区切り文字にする。sep='\s+'と同じこと。整数(int)や小数(float)などのデータ型を指定できる。dictで列ごとに個別に指定することも可能。列にNaNがあるときint型は指定できないconvertersが優先される。dictで特定の列の値を変換する関数を指定できる。読み込むときの文字コードを指定する。日本語を含むcsvなら'utf_8'、'shift_jis'、'cp932'などが使える。Trueでcsvが一列だけのときSeriesを返す。pd.read_csv('https://www.self-study-blog.com/wp-content/uploads/2021/09/sample_csv1.csv',encoding='utf_8')display(df)csvファイルの読み込みconvertersとdtypeの違い両方ともdictで渡す。辞書のキーには列名を使う。convertersは関数を使うこともできるので前処理に便利です。デフォルトではheader=0と同じくデータの1行をcolumnsとする。リストを渡すとcolumnsを指定できる。列の数とリストの長さが異なってもエラーにならないので注意が必要。indexにしたい列名を渡す。複数指定する場合はリストで渡す。prefix='X'のときの列名は、X0、X1、...となる。デフォルトで重複する列は、「X」...「X」ではなく、「X」、「X.1」、...「X.N」と指定される。Falseを渡すと、列の名前が重複している場合、データが上書きされる。読み込みたいcolumns名をリストで渡す。先頭からスキップしたい行数を整数でを渡す。スキップしたい行番号を整数のリストで渡す。ヘッダーがあるとき、ヘッダーが0行目になります。スキップするファイル下部の行数を整数で渡す。これを使うときはengine='python'にしないと警告が出る。読み込む行数を整数で渡す。大きいファイルの一部を読み込むときに有効。デフォルトで空白行をNaN値として解釈するのではなく、スキップします。改行記号を指定します。1文字の文字列しか指定できません。不良行(フィールド数が多すぎる行)に遭遇した場合の処理を指定。'error':不正な行に遭遇した場合、例外を発生。(デフォルト)'warn':不正な行に遭遇した際に警告を発し、その行をスキップ。'skip':不正な行に遭遇しても警告を出さずにスキップ。NA/NaNとして認識する文字列を渡す。複数指定する場合は文字列のリストを渡す。dictでは列ごとにNA/NaNとして認識する文字列を指定できる。na_valuesが渡されたかどうかによって、動作が異なるが使わなくてもOK。欠損値マーカー(空の文字列とna_valuesの値)を検出します。NAがないデータでは、Falseで、大きなファイルを読み込む際のパフォーマンスが向上。Trueで欠損値を処理する時間などが表示される。桁区切り文字を指定できる。すると、123456と認識してくれる。データを区切るためのカンマと桁区切りを区別するためのもの。Trueとみなしたい値のリストを渡す。'Ok']のときこれら3つはすべてTrueとして表示される。Falseとみなしたい値のリストを渡す。Trueで区切り文字の後のスペースをスキップします。長さ1の文字列のみ指定可能。引用符で囲まれた部分にカンマが含まれていても文字列として処理されます。クォーテーションで囲まれた部分をどのように処理するかのモードを指定する。「”」で囲まれた部分のみクォート扱い。クォートを無視してデータを区切る特殊なデータでないなら変更しなくてOKだと思います。quotecharで指定した文字列が2つ連続したとき、文字列として扱ってくれる。quoting=3のときに、他の文字をエスケープするために使用される1文字の文字列。長さ1の文字列を指定。その文字列以降は無視され、次の行へ移る。comment='#'のとき、#empty\na,b,c\n1,2,3は'a,b,c'がheaderとして扱われる。エンコーディングエラーの扱いを指定します。「山田」や「佐藤」などの日本語には反映されませんでした。(indexが日付のときのみ機能します。Trueのときparse_datesも有効なら処理速度が向上する可能性がある。Trueのときparse_datesが複数列の結合を指定しているなら、元の列を削除しない。日付データを処理する関数を渡す。関数を定義しておく必要あり。Trueにすると、日ー年の順になっているデータも読み込める。Trueなら一意に変換された日付のキャッシュを使用して、日付時間の変換を行う。日付の設定に関しては以下の記事で詳しくまとめています。【pandas】csvの日付をDataFrameに読み込む方法(フォーマット・datetime・parse_dates)csvをDataFrameとして読み込むときに日付の処理ができると便利ですよね。この記事では、Pythonのpandasでread_csv関数の日付に関する処理を紹介してきます。ほかのread_csv関数の引数は以下の記事[...]そのほかの引数ここでは使用頻度が少なそうなものや、高度な設定をする引数を紹介します。使用するパーサーエンジンを指定できる。Trueでイテレート用のTextFileReaderオブジェクトを返す。整数を渡すとその行数分のイテレート用のTextFileReaderオブジェクトを返す。デフォルトのままでの問題なく使える。このパラメータを指定すると、delimiter、doublequote、escapechar、skipinitialspace、quotechar、quotingの各パラメータの値が上書きされる。各列でデータ型が混在していないなら、Flaseにすると処理が減る。Trueにするとファイルパスへアクセスるときに速くなる。Cエンジンが浮動小数点値に使用するコンバータを指定。'high':通常のコンバータ'legacy':低精度のpandasオリジナルのコンバータ'round_trip':ラウンドトリップコンバータです。ホスト、ポート、ユーザー名、パスワードなどをdictで指定。HTTP(S)のURLの場合、キーと値のペアはヘッダーオプションとしてurllibに転送される。まとめいかがでしたか?pandasのread_csvの引数をすべてまとめてみました。使わなさそうなものもありますが、日付や文字列、欠損の処理ができると便利ですよね。csvの読み込みに役に立てば幸いです。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ABOUT独学で学んだことをアウトプットしているブログです。とことん独学ブログ.。