🙆‍♀️

2-①[AI][Kaggle][python]Kaggle入門(Pandasライブラリの使い方 1.生成/読込/書込)

に公開

Kaggle入門2(Pandasライブラリの使い方 1.生成/読込/書込)
Kaggle入門2(Pandasライブラリの使い方 2.インデックス作成、選択、割り当て)
Kaggle入門2(Pandasライブラリの使い方 3.生成/読込/書込)
Kaggle入門2(Pandasライブラリの使い方 4.生成/読込/書込)
Kaggle入門2(Pandasライブラリの使い方 5.生成/読込/書込)
Kaggle入門2(Pandasライブラリの使い方 6.生成/読込/書込)

Kaggle入門1 機械学習Intro 1.モデルの仕組み

生成AI作る人への道。
「Python」っ言語のPandasライブラリの使い方を必須ってレベルで知っとく必要がある。Excelで操作するときとかもすごい便利なのでこの機会に覚えましょう。
とはいえ全編英語でお送り中なので翻訳しながら進めてみました。英語なのでニの足を踏んでる人向けに役に立つのではないかと。

Abstract

Kaggle「PandasのCreating, Reading and Writing」の翻訳と実行方法の解説

1. 生成/読込/書込

理論編

序論 (Introduction)

このマイクロコースでは、データ分析において最も人気のあるPythonライブラリ「pandas」についてすべてを学びます。

学習を進めながら、実際のデータを使ったいくつかの実践的な演習を行います。チュートリアルを読みながら、対応する演習に取り組むことをお勧めします。

このチュートリアルでは、独自のデータを作成する方法と、既存のデータを扱う方法について学びます。

はじめに

pandasを使用するには、通常、次のコード行から始めます

import pandas as pd
データの作成

pandasには、**DataFrame(データフレーム)とSeries(シリーズ)**という2つの主要なオブジェクトがあります。

DataFrame

DataFrameは「表」です。個々のエントリ(項目)の配列を含み、それぞれが特定の値を持ちます。各エントリは「行(レコード)」と「列」に対応しています。

例えば、次の単純なDataFrameを見てみましょう。

pd.DataFrame({'Yes': [50, 21], 'No': [131, 2]})
Yes No
0 50 131
1 21 2

この例では、「0行目のNo」のエントリは131という値を持ち、「0行目のYes」のエントリは50という値を持ちます。

DataFrameのエントリは整数に限定されません。例えば、値が文字列であるDataFrameは次のようになります。

pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 'Sue': ['Pretty good.', 'Bland.']})
Bob Sue
0 I liked it. Pretty good.
1 It was awful. Bland.

ここでは pd.DataFrame() コンストラクタを使用して、これらのDataFrameオブジェクトを生成しています。新しいDataFrameを宣言する構文は、「キーが列名(この例ではBobとSue)」で「値がエントリのリスト」である辞書形式です。これが新しいDataFrameを構築する標準的な方法であり、最もよく目にする形式です。

この「辞書とリスト」によるコンストラクタは、列のラベルに値を割り当てますが、行のラベルには 0 から始まる昇順の数値(0, 1, 2, 3...)をそのまま使用します。これで問題ない場合もありますが、自分で行ラベルを割り当てたいことも多々あります。

DataFrameで使用される行ラベルのリストは Index(インデックス) と呼ばれます。コンストラクタで index パラメータを使用することで、これに値を割り当てることができます。

pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 
              'Sue': ['Pretty good.', 'Bland.']},
             index=['Product A', 'Product B'])
Bob Sue
Product A I liked it. Pretty good.
Product B It was awful. Bland.
Series

対照的に、Seriesはデータの値の「シーケンス(連続した集まり)」です。DataFrameが表であるなら、Seriesは「リスト」です。実際、リストひとつあれば作成できます。

pd.Series([1, 2, 3, 4, 5])
0    1
1    2
2    3
3    4
4    5
dtype: int64

Seriesは、本質的にはDataFrameの「単一の列」です。そのため、先ほどと同じように index パラメータを使用して行ラベルを割り当てることができます。ただし、Seriesには列名(column name)はなく、全体を指す name(名前)という属性のみを持ちます。

pd.Series([30, 35, 40], index=['2015 Sales', '2016 Sales', '2017 Sales'], name='Product A')

SeriesとDataFrameは密接に関連しています。 DataFrameは、実際には多くのSeriesが「貼り合わされたもの」 と考えると分かりやすいでしょう。これについては、チュートリアルの次のセクションで詳しく説明します。

データファイルの読み込み

手作業でDataFrameやSeriesを作成できるのは便利です。しかし、ほとんどの場合、自分たちでデータを手入力することはありません。その代わりに、すでに存在するデータを扱います。

データはさまざまな形式で保存されますが、群を抜いて基本的なのが、質素なCSVファイルです。CSVファイルを開くと、次のようになります。

Product A,Product B,Product C,
30,21,9,
35,34,1,
41,11,11

つまり、CSVファイルは「カンマで区切られた値の表」です。そのため、「Comma-Separated Values(CSV)」という名前がついています。

それでは、練習用のデータセットを脇に置いて、実際のデータセットをDataFrameに読み込んだときにどう見えるかを確認しましょう。データの読み込みには pd.read_csv() 関数を使用します。

wine_reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv")

shape 属性を使用して、結果のDataFrameがどれくらいの大きさかを確認できます。

wine_reviews.shape
# 結果: (129971, 14)

この新しいDataFrameには、14の異なる列にわたって約13万件のレコードがあります。エントリの総数は約200万個にもなります!

head() コマンドを使用すると、出来上がったDataFrameの内容を確認できます。これは最初の5行を抽出するコマンドです。

wine_reviews.head()
Unnamed: 0 country description designation points price province region_1 region_2 taster_name taster_twitter_handle title variety winery
0 0 Italy Aromas include tropical fruit, broom, brimston... Vulkà Bianco 87 NaN Sicily & Sardinia Etna NaN Kerin O’Keefe @kerinokeefe Nicosia 2013 Vulkà Bianco (Etna) White Blend Nicosia
1 1 Portugal This is ripe and fruity, a wine that is smooth... Avidagos 87 15.0 Douro NaN NaN Roger Voss @vossroger Quinta dos Avidagos 2011 Avidagos Red (Douro) Portuguese Red Quinta dos Avidagos
2 2 US Tart and snappy, the flavors of lime flesh and... NaN 87 14.0 Oregon Willamette Valley Willamette Valley Paul Gregutt @paulgwine Rainstorm 2013 Pinot Gris (Willamette Valley) Pinot Gris Rainstorm
3 3 US Pineapple rind, lemon pith and orange blossom ... Reserve Late Harvest 87 13.0 Michigan Lake Michigan Shore NaN Alexander Peartree NaN St. Julian 2013 Reserve Late Harvest Riesling ... Riesling St. Julian
4 4 US Much like the regular bottling from 2012, this... Vintner's Reserve Wild Child Block 87 65.0 Oregon Willamette Valley Willamette Valley Paul Gregutt @paulgwine Sweet Cheeks 2012 Vintner's Reserve Wild Child... Pinot Noir Sweet Cheeks

pd.read_csv() 関数は非常に多機能で、指定できるオプションのパラメータが30以上あります。例えば、このデータセットではCSVファイル自体にインデックスが含まれていますが、pandasはそれを自動的には認識しません。pandasに(新しく作り直すのではなく)その列をインデックスとして使わせるには、index_col を指定することができます。

wine_reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv", index_col=0)
wine_reviews.head()
country description designation points price province region_1 region_2 taster_name taster_twitter_handle title variety winery
0 Italy Aromas include tropical fruit, broom, brimston... Vulkà Bianco 87 NaN Sicily & Sardinia Etna NaN Kerin O’Keefe @kerinokeefe Nicosia 2013 Vulkà Bianco (Etna) White Blend Nicosia
1 Portugal This is ripe and fruity, a wine that is smooth... Avidagos 87 15.0 Douro NaN NaN Roger Voss @vossroger Quinta dos Avidagos 2011 Avidagos Red (Douro) Portuguese Red Quinta dos Avidagos
2 US Tart and snappy, the flavors of lime flesh and... NaN 87 14.0 Oregon Willamette Valley Willamette Valley Paul Gregutt @paulgwine Rainstorm 2013 Pinot Gris (Willamette Valley) Pinot Gris Rainstorm
3 US Pineapple rind, lemon pith and orange blossom ... Reserve Late Harvest 87 13.0 Michigan Lake Michigan Shore NaN Alexander Peartree NaN St. Julian 2013 Reserve Late Harvest Riesling ... Riesling St. Julian
4 US Much like the regular bottling from 2012, this... Vintner's Reserve Wild Child Block 87 65.0 Oregon Willamette Valley Willamette Valley Paul Gregutt @paulgwine Sweet Cheeks 2012 Vintner's Reserve Wild Child... Pinot Noir Sweet Cheeks

実践編

Introduction

最初のステップは、データファイルの読み取りです。この実践編では、手作業とデータファイルの読み取りの両方で、SeriesオブジェクトとDataFrameオブジェクトを作成します。

import pandas as pd
pd.set_option('display.max_rows', 5)
from learntools.core import binder; binder.bind(globals())
from learntools.pandas.creating_reading_and_writing import *
print("Setup complete.")

下記赤丸をクリック。Setup complete.が表示されればOK.

課題1.
下記のような DataFrame を作成します。

下記赤丸をクリック。Correctが表示されるとOK。

下記赤丸をクリックすると、ヒントと答えが表示されます。

課題2.
下記赤丸をクリック。Correctが表示されるとOK。

下記赤丸をクリックすると、ヒントと答えが表示されます。

課題3.
次のようなSeries変数「材料」を作成します。

  • 小麦粉 4カップ
  • 牛乳 1カップ
  • 卵 Lサイズ 2個
  • スパム 1缶
  • 名前: Dinner : dtype: object

下記赤丸をクリック。Correctが表示されるとOK。

下記赤丸をクリックすると、ヒントと答えが表示されます。

課題4.
次のワインのレビューの csv データセットを reviews という DataFrame に読み込みます。

csvファイルへのファイルパスは../input/wine-reviews/winemag-data_first150k.csvです。最初の数行は以下のようになります。

,country,description,designation,points,price,province,region_1,region_2,variety,winery
0,US,"This tremendous 100% varietal wine[...]",Martha's Vineyard,96,235.0,California,Napa Valley,Napa,Cabernet Sauvignon,Heitz
1,Spain,"Ripe aromas of fig, blackberry and[...]",Carodorum Selección Especial Reserva,96,110.0,Northern Spain,Toro,,Tinta de Toro,Bodega Carmen Rodríguez

下記赤丸をクリック。Correctが表示されるとOK。

下記赤丸をクリックすると、ヒントと答えが表示されます。

課題5.
以下のセルを実行して、animals という DataFrame を作成して表示します。

下のセルに、この DataFrame を cows_and_goats.csv という名前の csv ファイルとしてディスクに保存するコードを記述します。

下記赤丸をクリック。Correctが表示されるとOK。

下記赤丸をクリックすると、ヒントと答えが表示されます。

完了
次の章2.インデックス作成、選択、割り当て

Discussion