データ分析実践
初級問題チェック

問題 4 /40

pandasのread_csv関数に関する説明で、誤っているものはどれか。

選択 1

header引数を指定しなかった場合、読み込み後のDaraFrameのカラム名(列名)は、0から始まる連番になる。

選択 2

encoding引数を指定しなかった場合、utf-8の文字エンコーディングを指定したものとして処理される。

選択 3

第一引数はローカルのパスだけではなく、インターネットのURLを指定することもできる。

選択 4

skiprows引数で整数を指定した場合、先頭から何行飛ばすかを指定したことになる。

解説

選択肢1が正解です。 【選択肢1】 header引数を指定しなかった場合、読み込み後のDaraFrameのカラム名(列名)は、0から始まる連番になる。 誤った説明です。 header引数を指定しなかった場合は、CSVファイルの1行目がDataFrameのカラム名(列名)になります。 CSVファイルにヘッダ行がない場合は「header=None」を指定します。その場合はDaraFrameのカラム名は0から始まる連番になります。 header引数でインデックス番号を指定した場合は、その行がカラム名になり、その下の行から読み込まれます。例えば「header=2」と指定した場合、CSVファイルの3行目(インデックス番号2)がカラム名になり、4行目以降が読み込まれます。 【選択肢2】 encoding引数を指定しなかった場合、utf-8を指定したものとして処理される。 正しい説明です。 例えば文字エンコーディングがcp932のCSVファイルを読み込む際、「encoding='cp932'」の引数をつけないとUnicodeDecodeErrorになります。 エラーの中に正しい文字エンコーディングの情報は表示されないため、事前にテキストエディタなどで文字エンコーディングを確認するか、Python標準のchardetモジュールのdetect関数で確認します。 【選択肢3】 第一引数はローカルのパスだけではなく、インターネットのURLを指定することもできる。 正しい説明です。 ■ ローカルファイル pd.read_csv('data/sample.csv') ■ インターネットのURL pd.read_csv('https://sample.com/data/sample.csv') 【選択肢4】 skiprows引数で整数を指定した場合、先頭から何行飛ばすかを指定したことになる。 正しい説明です。 skiprows引数は、先頭から何行飛ばすかを指定する場合は整数で指定し、特定の行を飛ばす場合はリストでインデックス番号を指定します。 例えば「skiprows=2」とした場合はCSVファイルの3行目以降を読み込み、「sikiprows=[0, 2]」とした場合はCSVファイルの1行目と3行目を除外して読み込みます。 read_csv関数の引数は、インデックス番号で指定する引数と、整数で指定する引数があるため混乱しますが、基本的にはインデックス番号で指定し、skiprowsなどの一部の引数だけ整数で指定することがあると覚えます。 他にもread_csv関数には次のような引数があります。 ■ usecols 読み込む列を指定する。 「usecols=[0, 2]」のようにインデックス番号で指定するか、「usecols=['a', 'c']」のように列名で指定します。 ■ na_values 指定した値をNaN(欠損値)に変換する。 例えば「na_values='0'」と指定すると、0がNaNに変換されて読み込まれます。 ■ dtype 読み込む値のデータ型を指定する。 例えば「dtype=object」と指定すると、数値もオブジェクトで読み込みます。例えば「04」をそのまま読み込むと「4」になりますが、「dtype=object」とすると「04」のまま読み込みます。 ■ index_col インデックスにする列を指定する。 例えば「index_col=0」とすると、1列目がインデックスになります。index_col引数を付けなかった場合は、インデックスは0始まりの連番になります。 ■ thousands 3桁区切りのカンマが含まれた数値を数値として読み込む。 例えば「3,456」というデータがある場合、「thousands=','」とすると「3456」の数値として読み込みます。 ■ chunksize ファイルを分割して読み込む。 大容量のCSVファイルを一度に読み込もうとすると、環境によってはエラーになることがあります。その場合は「chunksize=5000」のように記述して、一度に読み込む行数を整数で指定して分割します。 (公式書籍 p.26-29)