【解説】データサイエンス100本ノック【問94〜100回答】
当ページのリンクには広告が含まれています。
- 第94問目;CSV出力(ヘッダ有り、コード変換なし)
- 第95問目:CSV出力(ヘッダ有り、UTF-8からSJIS変換)
- 第96問目:CSV出力(ヘッダ無し、コード変換なし)
- 第97問目:CSV入力(ヘッダ有り、コード変換なし)
- 第98問目:CSV入力(ヘッダ無し、コード変換なし)
- 第99問目:TSV出力(ヘッダ有り、コード変換なし)
- 第100問目:TSV入力(ヘッダ有り、コード変換あり)
- まとめ:ファイルの入出力を学びました。
データサイエンス100本ノックの始め方は、以下の記事を参考にしていただければと思います。
第94問目;CSV出力(ヘッダ有り、コード変換なし)
P-094: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。
・ファイル形式はCSV(カンマ区切り)
・ヘッダ有り
・文字コードはUTF-8
第93問目で作成したdf_product_full
をcsvファイルとして出力させます。
データフレームをcsvファイルとして保存する場合、to_csv
メソッドを使用します。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html
to_csv
メソッドのheader引数では、ヘッダの有無はbool型で指定できます。
なおデフォルトではTrue
となっています。
index引数ではindexの有無もbool型で指定できます。(デフォルトはTrue)
文字コードは、encoding='utf-8'
のように指定ができます。
本問を解きながら使い方を学びましょう。
1 | df_product_full.to_csv('./data/94.csv', encoding='UTF-8', index=False) |
dataフォルダの配下に94.csv
というファイルが出力されているはずです。
第95問目:CSV出力(ヘッダ有り、UTF-8からSJIS変換)
P-095: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。
・ファイル形式はCSV(カンマ区切り)
・ヘッダ有り
・文字コードはCP932
データフレームをcsvファイルとして保存する際は、to_csvメソッドを使用すればよかったですね。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html
93問目で作成したdf_product_fullを指定された仕様でファイル出力していきます。
1 | df_product_full.to_csv('./data/95.csv', encoding='CP932') |
dataフォルダ配下に95.csv
というファイルが出力されているはずです。
第96問目:CSV出力(ヘッダ無し、コード変換なし)
P-096: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。
・ファイル形式はCSV(カンマ区切り)
・ヘッダ無し
・文字コードはUTF-8
93問目で作成したカテゴリ名月商品データ(df_product_full)を指定された仕様で出力します。
本問もこれまで同様to_csvメソッドを使用します。問題では指定されていませんが、indexは無しの形式で出力してみましょう。
1 | df_product_full.to_csv('./data/96.csv', header=False, encoding='UTF-8', index=False) |
これで完成です。
第97問目:CSV入力(ヘッダ有り、コード変換なし)
P-097: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。
・ファイル形式はCSV(カンマ区切り)
・ヘッダ有り
・文字コードはUTF-8
94問目で作成した94.csv
ファイルを読み込んでいきます。
csvファイルを読み込みpandas.DataFrameとする場合、pandas.read_csv
関数を使用します。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.read_csv.html
read_csv関数のheader引数では、ヘッダの有無はbool型で指定できます。
デフォルトはTrueです。
文字コードは、encoding=’utf-8’のように指定が可能です
1 | df_tmp = pd.read_csv('./data/94.csv') |
1 | product_cd category_major_cd category_medium_cd category_small_cd unit_price unit_cost category_major_name category_medium_name category_small_name |
無事、csvデータを読み込むことができました。
第98問目:CSV入力(ヘッダ無し、コード変換なし)
P-098: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。
・ファイル形式はCSV(カンマ区切り)
・ヘッダ無し
・文字コードはUTF-8
96問目で作成した96.csv
を読み込みます。
1 | df_tmp = pd.read_csv('./data/96.csv', header=None) |
1 | 0 1 2 3 4 5 6 7 8 |
無事、csvデータを読み込むことができました。
第99問目:TSV出力(ヘッダ有り、コード変換なし)
P-099: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。
・ファイル形式はTSV(タブ区切り)
・ヘッダ有り
・文字コードはUTF-8
TSVファイル出力もto_csv
メソッドで行います。
tsvファイルとは、区切り文字が\t
のファイルです。
to_csv
メソッドの区切り文字をsep='\t'
のように指定することで保存が可能です。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html
本問では93問目で作成したカテゴリ名月商品データdf_product_full
を、問題で指定された仕様でファイル出力を行います。
1 | df_product_full |
1 | product_cd category_major_cd category_medium_cd category_small_cd unit_price unit_cost category_major_name category_medium_name category_small_name |
1 | df_product_full.to_csv('./data/99.tsv', sep='\t', encoding='UTF-8', index=False) |
dataフォルダ配下に99.tsv
というファイルが作成されたと思います。
第100問目:TSV入力(ヘッダ有り、コード変換あり)
P-100: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。
・ファイル形式はTSV(タブ区切り)
・ヘッダ有り
・文字コードはUTF-8
tsvファイルを読み込みpandas.DataFrameとする場合、pandas.read_table関数を使用します。
read_table関数のheader引数では、ヘッダの有無はbool型で指定できます。
デフォルトはTrueとなります。
文字コードは、encoding='utf-8'
のように指定ができます。
本問では99問目で作成した99.tsvファイルを読み込んで、データフレームを作成します。
1 | df_tmp = pd.read_table('./data/99.tsv', encoding='UTF-8') |
1 | product_cd category_major_cd category_medium_cd category_small_cd unit_price unit_cost category_major_name category_medium_name category_small_name |
まとめ:ファイルの入出力を学びました。
本記事で紹介した方法を元にデータサイエンティストとしての知見を深めていただければと思います。
データサイエンティストに必要な知識は、TechAcademyのデータサイエンスコースでの学習がおすすめです。
無料体験可能なのでご確認ください。