【解説】データサイエンス100本ノック【問94〜100回答】

【解説】データサイエンス100本ノック【問94〜100回答】

当ページのリンクには広告が含まれています。



目次


データサイエンス100本ノックの始め方は、以下の記事を参考にしていただければと思います。


>>データサイエンス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
2
df_tmp = pd.read_csv('./data/94.csv')
df_tmp.head(10)
出力
1
2
3
4
5
6
7
8
9
10
11
	product_cd	category_major_cd	category_medium_cd	category_small_cd	unit_price	unit_cost	category_major_name	category_medium_name	category_small_name
0 P040101001 4 401 40101 198.0 149.0 惣菜 御飯類 弁当類
1 P040101002 4 401 40101 218.0 164.0 惣菜 御飯類 弁当類
2 P040101003 4 401 40101 230.0 173.0 惣菜 御飯類 弁当類
3 P040101004 4 401 40101 248.0 186.0 惣菜 御飯類 弁当類
4 P040101005 4 401 40101 268.0 201.0 惣菜 御飯類 弁当類
5 P040101006 4 401 40101 298.0 224.0 惣菜 御飯類 弁当類
6 P040101007 4 401 40101 338.0 254.0 惣菜 御飯類 弁当類
7 P040101008 4 401 40101 420.0 315.0 惣菜 御飯類 弁当類
8 P040101009 4 401 40101 498.0 374.0 惣菜 御飯類 弁当類
9 P040101010 4 401 40101 580.0 435.0 惣菜 御飯類 弁当類

無事、csvデータを読み込むことができました。

第98問目:CSV入力(ヘッダ無し、コード変換なし)

P-098: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。

・ファイル形式はCSV(カンマ区切り)
・ヘッダ無し
・文字コードはUTF-8

96問目で作成した96.csvを読み込みます。

1
2
df_tmp = pd.read_csv('./data/96.csv', header=None)
df_tmp.head(10)
出力
1
2
3
4
5
6
7
8
9
10
11
	0	1	2	3	4	5	6	7	8
0 P040101001 4 401 40101 198.0 149.0 惣菜 御飯類 弁当類
1 P040101002 4 401 40101 218.0 164.0 惣菜 御飯類 弁当類
2 P040101003 4 401 40101 230.0 173.0 惣菜 御飯類 弁当類
3 P040101004 4 401 40101 248.0 186.0 惣菜 御飯類 弁当類
4 P040101005 4 401 40101 268.0 201.0 惣菜 御飯類 弁当類
5 P040101006 4 401 40101 298.0 224.0 惣菜 御飯類 弁当類
6 P040101007 4 401 40101 338.0 254.0 惣菜 御飯類 弁当類
7 P040101008 4 401 40101 420.0 315.0 惣菜 御飯類 弁当類
8 P040101009 4 401 40101 498.0 374.0 惣菜 御飯類 弁当類
9 P040101010 4 401 40101 580.0 435.0 惣菜 御飯類 弁当類

無事、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
2
3
4
5
6
7
8
9
10
11
12
13
	product_cd	category_major_cd	category_medium_cd	category_small_cd	unit_price	unit_cost	category_major_name	category_medium_name	category_small_name
0 P040101001 04 0401 040101 198.0 149.0 惣菜 御飯類 弁当類
1 P040101002 04 0401 040101 218.0 164.0 惣菜 御飯類 弁当類
2 P040101003 04 0401 040101 230.0 173.0 惣菜 御飯類 弁当類
3 P040101004 04 0401 040101 248.0 186.0 惣菜 御飯類 弁当類
4 P040101005 04 0401 040101 268.0 201.0 惣菜 御飯類 弁当類
... ... ... ... ... ... ... ... ... ...
10025 P091503001 09 0915 091503 280.0 210.0 洗剤 DIY用品 園芸用品
10026 P091503002 09 0915 091503 680.0 510.0 洗剤 DIY用品 園芸用品
10027 P091503003 09 0915 091503 1080.0 810.0 洗剤 DIY用品 園芸用品
10028 P091503004 09 0915 091503 1130.0 848.0 洗剤 DIY用品 園芸用品
10029 P091503005 09 0915 091503 1280.0 960.0 洗剤 DIY用品 園芸用品
10030 rows × 9 columns
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
2
df_tmp = pd.read_table('./data/99.tsv', encoding='UTF-8')
df_tmp.head(10)
出力
1
2
3
4
5
6
7
8
9
10
11
	product_cd	category_major_cd	category_medium_cd	category_small_cd	unit_price	unit_cost	category_major_name	category_medium_name	category_small_name
0 P040101001 4 401 40101 198.0 149.0 惣菜 御飯類 弁当類
1 P040101002 4 401 40101 218.0 164.0 惣菜 御飯類 弁当類
2 P040101003 4 401 40101 230.0 173.0 惣菜 御飯類 弁当類
3 P040101004 4 401 40101 248.0 186.0 惣菜 御飯類 弁当類
4 P040101005 4 401 40101 268.0 201.0 惣菜 御飯類 弁当類
5 P040101006 4 401 40101 298.0 224.0 惣菜 御飯類 弁当類
6 P040101007 4 401 40101 338.0 254.0 惣菜 御飯類 弁当類
7 P040101008 4 401 40101 420.0 315.0 惣菜 御飯類 弁当類
8 P040101009 4 401 40101 498.0 374.0 惣菜 御飯類 弁当類
9 P040101010 4 401 40101 580.0 435.0 惣菜 御飯類 弁当類

まとめ:ファイルの入出力を学びました。

本記事で紹介した方法を元にデータサイエンティストとしての知見を深めていただければと思います。

データサイエンティストに必要な知識は、TechAcademyのデータサイエンスコースでの学習がおすすめです。

無料体験可能なのでご確認ください。

コメント