コメントはまだありません概要Pythonモジュールのpandasには、read_csv(又はread_excel等)という、csvやexcelのデータを分析に適した形で読み込む強力な関数があります。本関数には沢山の引数(44個)があり、公式マニュアルに簡易的な説明はありますが、全体的に使い方の分からないパラメータが多く、自分としてはこれによりpandasのとっつきにくさがアップしている気がしました。⇒何とか整理してみようというのがこの記事。skip_blank_lines特に断りがない限り、使うデータは、パラメータの効果がわかり易くなるよう、タブ区切りだったり、文字列と空白と数値が混在していたりと、以下のようなちょっと癖のあるものにしています。filepath_or_buffer本パラメータは、読み込むファイル名を指定するときに使うパラメータです。以下1、2に示すように、引数なしで動きますので実際に使うことはないでしょう。日本語はデフォルトだとutf_8形式で保存した場合のみ文字化けなく読み込めます。それ以外の形式の場合はencodingを参照ください。pd#1と2のどちらの書き方でも処理は同じ。delimiter区切りの形式を指定するパラメータ。下記の例はsepにタブ区切り(\t)を渡した結果ですが、タブでデータを区切れていることが分かります。delimiterにタブ区切りを指定しても結果は同じでした。違う値をsepとdelimiter同時に指定した場合にはdelimiterが優先されました。5engine読み込み処理をCで実施するかPythonで実施するかを指定するパラメータ。マニュアルにはCの方が早いと書かれており、検証したところ確かに1割~くらい早いことを確認しました。ちなみに、デフォルトはCなので、あえてPythonを指定したいとき以外は使うことはないと思います。failed」が発生することがあります。この場合は’python’を使うことで対策出来ます。failed」が起きた場合の対策lineterminator改行文字を指定するパラメータ。デフォルトでは\rですが、これを使うことで他の記号にも代えられます。a...quotecharクォテーションを指定するパラメータ。デフォルトは”(ダブルクォテーション)。delimiterで指定した区切り記号があっても無視されます。0quotingクォテーションで囲まれた値の処理方法を指定するパラメータ。デフォルトは0ですが、以下のように4種の値を指定できます。値を変えて試してみたところ、0,1,2はクォテーションで囲まれた部分を1データとして抽出、3はクォテーションも含めて文字列として抽出されました。0,1,2の違いは今のところ不明です。pd#0~2まではクォテーションで囲まれている中身を取り出す。delimiterで指定した区切り記号の次にあるスペースを無視するかどうかを指定するパラメータ。デフォルトはFalse。A)、仕様通りTrueとFalseの場合で値が一致しないことを確認。D#見た目ではわからないが、Falseの方はAの前に半角スペースがあり、Trueの結果とは一致しない。Falseescapecharこのパラメータで指定した記号直後のエスケープシーケンスを文字列として扱うパラメータ。'D'#|を指定することで、直後のエスケープシーケンスが無効になり、\tの文字列で表示されている。skiprows各列のデータ形式を指定するパラメータ。デフォルトではデータから型を自動判断するようになっていますが、数値でなく文字列で扱いたい場合など、明示的に指定したい場合に使います。指定方法は、データ名と型式を辞書形式のデータにして渡すのですが、この時併せてデータ名をnames変数に渡しておく必要があります。下の2つ目の例では、D001とD002を1文字の文字列(S1)として読み込むように設定しています。確認するとたしかに1文字長となっていますが、2行目にゴミが残っていますね。これを消すためには、skiprowsに1を指定します。skiprowsは指定した列だけデータから読み込ませないようにするパラメータです。3つ目の結果を確認すると、正しく読めていることが分かります。いえ、せっかくheaderにあるものをハードコーディングして読み込ませるなんてばかばかしいですよね。これの対処方法は別記事で紹介しようと思います。5#D001とD002を1文字長の文字列として読み込み指定。5#D001とD002を1文字長の文字列として読み込み指定し、データの1行目をスキップ。5compressionファイル形式を指定するパラメータ。デフォルトはinfer。None}が設定でき、圧縮ファイルもそのまま読み込めるということだと思います。この場合engineをpythonにしないと動かないようです。手元に圧縮ソフトがなかったので検証は見送り。instance(csvDialectのインスタンス)を渡せと書いてあります。quoting}をメンバに持つものであり、機能としてはそれぞれと変わらないものと思います。5headerデータ列の名称が記載されている行を指定するパラメータ。デフォルトは1行目(0)。存在する行数を指定すればその行の値がデータ列の名称として扱われるが、存在しない行(例えば-1)を設定した場合には1から順に連番が振られる。pd#header行を指定することで任意の行をデータ列の名称にできる。5index_colデータ行の名称が記載されている列を指定するパラメータ。デフォルトはNone。Noneの場合には1から順に自動で行数が振られる。pd#index_col行を指定することで任意の列をデータ行の名称にできる。5prefixheaderがNoneのときに、列名の先頭に文字列を付加するパラメータ。デフォルトはNone。下例では、先頭にDがつくように指定することで、列名の頭にDがついていることが分かる。pd#headerはNoneでなければならない。5na_valuesNaNとして扱う値を指定するパラメータ。デフォルトはNone。下例では、AをNaNとするように指定している。pd#AをNaNに指定。false_valuestrueとして扱う値、及びfalseとして扱う値を指定するパラメータ。デフォルトはNone。下例ではD005行目の要素を割り当てて真偽値として読み込ませている。NaNを除く列にある要素すべてに割り当てないと動作しない。pd#AをNaNに指定。5keep_default_na空欄の要素をNaNとして扱うかを指定するパラメータ。デフォルトはTrue。Falseを指定すると下例のように空欄(長さ0の文字列)として扱われる。空欄のままにしておくと、pandasのplot等、さまざまな処理が使いにくくなる点には注意。5parse_dates日付として扱う列を指定するパラメータ。デフォルトはFalse。リスト形式で列番号を与えることで、複数の列を日付として処理したり、リスト内でさらにリスト表現することで、日付と時間に分かれている列を結合して日付として認識させることができる。列名を指定するためにはリストでなく辞書形式で渡せばよい。どのような形式のデータを日付として認識できるかは要調査。pd#1列目に日付データ(8ケタ数字)を持たせておく。5#1列目を日付に指定。5#1,2列目を結合して日付に指定。5keep_date_colparse_datesで指定した列を結合する際に、元の列も残すためのパラメータ。デフォルトはFalse。5date_parserparse_datesで指定した列を結合する際に、関数を指定するためのパラメータ。デフォルトはFalse。conv#1列目に日付データ(8ケタ数字)、2列目に時間データを持たせておく。5dayfirst日付データがDD/MMという形式で入っているデータを読み込む際に設定するパラメータ。デフォルトはFalse(つまり、MM/DD)として読み取る。NaNthousands1000ごとの桁区切りの記号を指定するパラメータ。デフォルトはNone。この値を指定しておかないと例えば100,000はカンマを区切りとして100と000に分割される。100commentコメント行を識別する記号を指定するパラメータ。デフォルトはNone。指定した値が初めにある行はコメントとみなしてスルーされる。100decimal小数点を識別する記号を指定するパラメータ。#小数点記号にカンマを割り当てたデータを用意。100.1nrows読み込むデータの行数を指定するパラメータ。デフォルトはNone(全て)。#読み込むデータを3行だけに指定。NaNiterator読み込んだデータをpandasのDataFrame型ではなく、Textfilereader型で返すパラメータ。デフォルトはFalse。0x14d5a9e8>chunksize読み込んだデータをDataFrame型ではなく、Textfilereader型で返すパラメータ。iteratorと異なり、int型を引き数とし、指定した行数で区切って読み込む。メモリに乗らないようなサイズの大きなデータを細かく読んでいくときに使う。5skipfooterフッターとみなす行数を指定するパラメータ。フッターとみなしたデータは読み込まない。24converters変数の型を指定するパラメータ。dtypesで同じことができそうなので、使う機会は少ないかも。pd#D005の型を文字列に指定。5verboseデフォルトはFalse。Trueを指定すると変換に要した時間が表示される模様。pd#verboseをTrueに指定。msencoding文字コートを指定する変数。デフォルトはutf-8。日本語フォントで書かれている文字が文字化けする場合(utf-8で記述されていない場合)、’shift-jis’や’cp932’を指定することで文字化けを防止できることが多い。pd#実際と違うコードを指定してみると、日本語部分が文字化け。squeezeデータを単一列のデータとして読み込むパラメータ。デフォルトはFalse。na_filterデータの空欄等をNaNとして処理するためのパラメータ。デフォルトはTrue。データ内にこれらの要素がない場合にはFalseを設定することで処理速度を向上させることができる。試してみると、確かにFalseのほうがちょっと早い。loopusecolsデータを読み込む列を指定するパラメータ。5mangle_dupe_cols重複する列がある場合の処理を指定するパラメータ?変更しても効果なく調査中。tupleize_cols調査中。error_bad_lines項目数と一致しない行を見つけた時の処理を指定するパラメータ。デフォルトはTrueで、エラーを返す。Falseを指定した場合、その行を飛ばして読み込む。warn_bad_lines項目数と一致しない行を見つけた時に警告を返す。error_bad_linesがFalseであることが必要。skip_blank_lines空欄の行の取り扱いを指定するパラメータ。Trueを指定するとスキップするようになる。まとめread_csvでは、かなり細かい設定ができるようです。使うのは、parse_dates、usecols、encodingといったところでしょうか。この関数は非常に使える関数だと思いますので、是非使い方をマスターしたいところです。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。プロフィール兵庫県在住の30代データサイエンティスト。Pythonを使った機械学習等によるデータ分析や、ウェブアプリ等のシステム開発に取り組んでいます。