【Python初心者でも分かる】データサイエンティスト協会の100本ノック|データの読み込み/書き出し

スポンサーリンク
Python
ゼロ知識の初心者がデータサイエンスを完全無料で学習する方法5選
データサイエンスの知識や技術、またはPythonについて学びたい。でも「大学に行くほど本気度がない」、「スクールに行くほどお金がない」、なんせ「時間がない」という方も多いはずです。というよりほとんどの方がそうだと思います(当然わたし...
ウソ情報にだまされない、研究と因果関係から読み解く情報の取捨選択
ビジネス書やビジネスYouTuberなどは、ビジネスに役立つ情報を発信しています。これらは、ビジネスパーソンにとって、自分を成長させるための有用なツールになっている。 たとえば、優秀な社員が行っている行動や考え方、ダメな社員が行ってい...

データサイエンティスト協会の100本ノックがGitHubに公開しているデータとPythonコードを初心者にでも分かるように解説していきます。

今回は92~100本です。ついに最後になりました。

内容は主に、データから新たなデータを作成する「データの読み込み / 書き出しの方法」について解説していきます。

Pythonの環境設定は以下の記事を参考にして下さい。

【2021年最新】M1 mac でanacondaをインストールする方法

【2021年最新】WindowsでAnacondaをインストールする方法

  1. データ読み込み / 書き出し
    1. P-093: 商品データフレーム(df_product)では各カテゴリのコード値だけを保有し、カテゴリ名は保有していない。カテゴリデータフレーム(df_category)と組み合わせて非正規化し、カテゴリ名を保有した新たな商品データフレームを作成せよ。
    2. P-094: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。
    3. P-095: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。
    4. P-096: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。
    5. P-097: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。
    6. P-098: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。
    7. P-099: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。
    8. P-100: 先に作成した以下形式のファイルを読み込み、データフレームを作成せよ。また、先頭10件を表示させ、正しくとりまれていることを確認せよ。

データ読み込み / 書き出し

まずは、以下からダウンロードして下さい。

GitHubからデータをダウンロードする方法

P-093: 商品データフレーム(df_product)では各カテゴリのコード値だけを保有し、カテゴリ名は保有していない。カテゴリデータフレーム(df_category)と組み合わせて非正規化し、カテゴリ名を保有した新たな商品データフレームを作成せよ。

import pandas as pd

df_product = pd.read_csv("product.csv")
df_category = pd.read_csv("category.csv")

df_93 = pd.merge(df_product,
                 df_category[["category_small_cd",
                              "category_major_name",
                              "category_medium_name",
                              "category_small_name"]],
                 how="inner",
                 on="category_small_cd")

df_93.head()

出力:

データの結合の仕方について解説します。

コードの中ほどの、pd.mearge( …) のところです。

青枠(df_product)と黄枠(df_category)の必要な変数を、”category_small_cd” を一致させた状態(on= で指定する)で、結合させています。

この、データの結合は今までにも解説しており、よく使う方法なので理解しておきましょう。

P-094: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。

  • ファイル形式はCSV(カンマ区切り)
  • ヘッダ有り
  • 文字コードはUTF-8
df_93.to_csv("product_full_1.csv",encoding="UTF-8",index=False)

データの書き出しなので、出力されません。

csvファイルと、Pythonでデータを確認してみましょう。

csvファイルでは文字化けしていますが、Pythonで文字コードを書きだしと同じ、”UTF-8″ にすると文字化けなく読み込み可能です。

日本語などの文字データを機械に理解させるためには、文字コードの指定が必要です。

  • UTF-8
  • CP932
  • SHIFT JIS

などがあります。また、パソコンの環境によっても文字コードで違いがありますので、出力結果が異なる可能性があります。ご了承ください。

P-095: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。

  • ファイル形式はCSV(カンマ区切り)
  • ヘッダ有り
  • 文字コードはCP932
df_93.to_csv("product_full_2.csv",encoding="CP932",index=False)

csvファイルと、Pythonでデータを確認してみましょう。

文字コードが “CP932” では文字化けなく読み込み可能でした(パソコンの環境によって違うかも)

P-096: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。

  • ファイル形式はCSV(カンマ区切り)
  • ヘッダ無し
  • 文字コードはUTF-8
df_93.to_csv("product_full_3.csv",header=False,encoding="UTF-8",index=False)

やはり “UTF-8” でcsvファイルでは文字化けします。

header=False を指定しているため、ヘッダーつまり変数(カラム)名がなくなっています。これでは、正確なデータの書き出しは出来ていないですね。

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

  • ファイル形式はCSV(カンマ区切り)
  • ヘッダ有り
  • 文字コードはUTF-8
df_97 = pd.read_csv("product_full_1.csv")
df_97.head(10)

出力:

Pythonでのデータの読み込みでは、文字コード “UTF-8” は指定しなくても可能でした。

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

  • ファイル形式はCSV(カンマ区切り)
  • ヘッダ無し
  • 文字コードはUTF-8
df_98 = pd.read_csv("product_full_2.csv",encoding="UTF-8",header=None)
df_98.head(10)

出力:

読み込み出来ずに、エラーコードが発生しました。「”UTF-8″ では文字が読めませんよ」と言っています。

なぜなら、このデータは “CP932” で書き込んだデータだからですね。文字コードが違うとこんなエラーが出てしまいます。

P-099: 先に作成したカテゴリ名付き商品データを以下の仕様でファイル出力せよ。なお、出力先のパスはdata配下とする。

  • ファイル形式はTSV(タブ区切り)
  • ヘッダ有り
  • 文字コードはUTF-8
df_93.to_csv("product_full.tsv",sep="\t",encoding="UTF-8",index=False)

出力:

“tsv” とは “Tab Separated Values” のことです。つまり、tab で分けた値のことです。

“csv” とは “comma Separated Values” のことです、つまり、カンマ( , )で分けた値のことです。

なので、上のコードでは、to_csv を使用して、拡張子を .tsv に、分け方を sep=”\t” に指定することで、tsv ファイルで書き込むことができます。

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

  • ファイル形式はTSV(タブ区切り)
  • ヘッダ有り
  • 文字コードはUTF-8
df_100 = pd.read_table("product_full.tsv",encoding="UTF-8")
df_100.head(10)

出力:

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

おめでとうございます。100本ノックが終了しました。

この100本ノックはデータ加工の初級編としては大変すぐれたものです。

ここまでできれば、データ分析に必要なデータの処理はできるようになったといってもいいでしょう。しかし、統計処理や機械学習をするには、さらに詳細なデータの加工・前処理の技術が必要です。お互いにがんばっていきましょう。

データサイエンティスト協会の100本ノックを解説|ダウンロードから読み込みまで

データサイエンティスト協会の100本ノックを解説|データの抽出

データサイエンティスト協会の100本ノックを解説|変数の一部を使ってデータを抽出する

データサイエンティスト協会の100本ノックを解説|ソート(順序で整列)

データサイエンティスト協会の100本ノックを解説|グループ分け

データサイエンティスト協会の100本ノック|新たなデータフレームの作成

データサイエンティスト協会の100本ノック|日付データ

データサイエンティスト協会の100本ノック|特徴量エンジニアリング

データサイエンティスト協会の100本ノック|変数を整える

データサイエンティスト協会の100本ノック|小数点の処理

データサイエンティスト協会の100本ノック|時系列データの処理

データサイエンティスト協会の100本ノック|欠損値の処理

データサイエンティスト協会の100本ノック|住所データの処理

データサイエンティスト協会の100本ノック|サンプリングと正規化




コメント

タイトルとURLをコピーしました