
何年にもわたって、データ サイエンスでの Python の使用は信じられないほど増えており、日々増え続けています。
データ サイエンスは、多くのサブフィールドを持つ広大な研究分野であり、その中でもデータ分析は間違いなくこれらすべての分野の中で最も重要な分野の 1 つであり、データ サイエンスのスキル レベルに関係なく、データ サイエンスを理解したり理解したりすることがますます重要になっています。少なくともその基本的な知識を持っています。
データ分析とは
データ分析は、大量の構造化されていない、または組織化されていないデータのクレンジングと変換であり、このデータに関する重要な洞察と情報を生成して、情報に基づいた意思決定を行うのに役立ちます。
データ分析には、Python、Microsoft Excel、Tableau、SaS など、さまざまなツールが使用されていますが、この記事では、Python でデータ分析がどのように行われるかに焦点を当てます。 より具体的には、 と呼ばれる python ライブラリでどのように行われるか パンダ.
パンダとは?
Pandas は、データ操作とラングリングに使用されるオープンソースの Python ライブラリです。 高速で非常に効率的で、さまざまな種類のデータをメモリにロードするためのツールを備えています。 再形成、スライスのラベル付け、インデックス付け、さらには複数の形式のデータのグループ化に使用できます。
Pandas のデータ構造
Pandas には 3 つのデータ構造があります。
それらの 3 つを区別する最善の方法は、1 つに他の複数のスタックが含まれていると見なすことです。 したがって、DataFrame はシリーズのスタックであり、Panel は DataFrame のスタックです。
シリーズは 1 次元配列です
いくつかのシリーズのスタックは、2 次元の DataFrame を作成します
いくつかの DataFrames のスタックは、3 次元のパネルを作成します
私たちが最もよく扱うデータ構造は 2 次元の DataFrame であり、遭遇する可能性のある一部のデータセットのデフォルトの表現手段にもなります。
Pandas でのデータ分析
この記事では、インストールは必要ありません。 と呼ばれるツールを使用します。 協力的な Google によって作成されました。 これは、データ分析、機械学習、および AI のためのオンライン Python 環境です。 これは単なるクラウドベースの Jupyter Notebook であり、データ サイエンティストが必要とするほぼすべての Python パッケージがプリインストールされています。
さぁ、次へ https://colab.research.google.com/notebooks/intro.ipynb. 以下が表示されます。
左上のナビゲーションで、ファイル オプションをクリックし、「新しいノートブック」オプションをクリックします。 ブラウザーに読み込まれた新しい Jupyter ノートブック ページが表示されます。 最初に行う必要があるのは、パンダを作業環境にインポートすることです。 次のコードを実行することでそれを行うことができます。
import pandas as pd
この記事では、データ分析に住宅価格データセットを使用します。 使用するデータセットを見つけることができます ここ. 最初に、このデータセットを環境にロードします。
新しいセルで次のコードを使用してそれを行うことができます。
df = pd.read_csv('https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &token=6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ', sep=',')
.read_csv は、CSV ファイルを読み取りたいときに使用され、CSV ファイルがコンマ区切りであることを示すために sep プロパティを渡しました。
また、読み込まれた CSV ファイルが変数 df に格納されていることにも注意してください。
Jupyter Notebook で print() 関数を使用する必要はありません。 セルに変数名を入力するだけで、Jupyter Notebook が出力してくれます。
新しいセルに df と入力して実行すると、データセット内のすべてのデータが DataFrame として出力されます。
しかし、常にすべてのデータを表示したいわけではなく、最初のいくつかのデータとその列名だけを表示したい場合もあります。 df.head() 関数を使用して最初の 5 列を出力し、df.tail() を使用して最後の 5 列を出力できます。 2 つのいずれかの出力は、そのように見えます。
これらのいくつかの行と列のデータ間の関係を確認したいと思います。 .describe() 関数はまさにこれを行います。
df.describe() を実行すると、次の出力が得られます。
.describe() が、DataFrame のすべての列の平均値、標準偏差、最小値と最大値、およびパーセンタイルを提供することがすぐにわかります。 これは特に非常に便利です。
2D DataFrame の形状をチェックして、行と列の数を確認することもできます。 これは、形式 (行、列) のタプルを返す df.shape を使用して行うことができます。
df.columns を使用して、DataFrame 内のすべての列の名前を確認することもできます。
1 つの列だけを選択して、その中のすべてのデータを返したい場合はどうすればよいでしょうか? これは、辞書をスライスするのと同様の方法で行われます。 次のコードを新しいセルに入力して実行します
df['price ']
上記のコードは価格列を返します。それを新しい変数に保存することでさらに進むことができます
price = df['price']
実際の DataFrame の単なるサブセットであるため、price 変数の DataFrame で実行できる他のすべてのアクションを実行できるようになりました。 df.head()、df.shape などを実行できます。
列名のリストを df に渡すことで、複数の列を選択することもできます。
data = df[['price ', 'bedrooms']]
上記は「price」と「bedrooms」という名前の列を選択します。新しいセルに data.head() を入力すると、次のようになります。
列をスライスする上記の方法では、その列のすべての行要素が返されますが、データセットから行のサブセットと列のサブセットを返したい場合はどうなるでしょうか? これは .iloc を使用して行うことができ、Python リストと同様の方法でインデックスが作成されます。 だから私たちは何かをすることができます
df.iloc[50: , 3]
50 行目から 3 列目を最後まで返します。 これはかなりきちんとしていて、Python でリストをスライスするのとまったく同じです。
では、非常に興味深いことをやってみましょう。住宅価格データセットには、家の価格を示す列と、特定の家にある寝室の数を示す別の列があります。 住宅価格は連続値であるため、価格が同じ住宅が 2 つない可能性があります。 しかし、寝室の数はやや離散的であるため、寝室が 2 つ、3 つ、4 つの家などをいくつか持つことができます。
寝室の数が同じ家をすべて取得し、それぞれの個別の寝室の平均価格を見つけたい場合はどうすればよいでしょうか。 パンダでそれを行うのは比較的簡単です。そのように行うことができます。
df.groupby('bedrooms ')['price '].mean()
上記は最初に df.groupby() 関数を使用して同一の寝室番号を持つデータセットで DataFrame をグループ化し、次に寝室の列のみを指定し、.mean() 関数を使用してデータセット内の各家の平均を見つけるように指示します.
上記を視覚化したい場合はどうなりますか? それぞれの寝室番号の平均価格がどのように変化するかを確認できるようにしたいと思いますか? 前のコードを .plot() 関数などにチェーンするだけです。
df.groupby('bedrooms ')['price '].mean().plot()
次のような出力が得られます。
上記は、データの傾向を示しています。 横軸には明確な数のベッドルームがあります (複数の家が X 個のベッドルームを持つことができることに注意してください)。縦軸には、対応する横軸のベッドルーム数に関する価格の平均があります。軸。 寝室が 5 ~ 10 室の住宅は、寝室が 3 室の住宅よりもはるかに多くの費用がかかることがすぐにわかります。 また、寝室が 7 ~ 8 室の住宅は、15、20、または 30 室の住宅よりもはるかに費用がかかることも明らかになるでしょう。
上記のような情報は、データ分析が非常に重要である理由です。私たちは、分析なしではすぐに、またはまったく気付かないデータから有益な洞察を引き出すことができます。
欠損データ
一連の質問からなるアンケートに回答しているとしましょう。 アンケートへのリンクを何千人もの人々と共有して、フィードバックを提供できるようにしています。 私の最終的な目標は、このデータに対してデータ分析を実行して、データからいくつかの重要な洞察を得ることができるようにすることです。
現在、多くのことがうまくいかない可能性があります。一部の測量士は、私の質問のいくつかに答えることを不快に感じ、空白のままにしている可能性があります。 私のアンケートの質問のいくつかの部分について、多くの人が同じことをすることができました. これは問題とは見なされないかもしれませんが、調査で数値データを収集し、分析の一部で合計、平均、またはその他の算術演算のいずれかを取得する必要がある場合を想像してみてください。 欠落している値がいくつかあると、私の分析では多くの不正確さが生じる可能性があります。この欠落している値を見つけて、それらに近い代替値となる可能性のある値に置き換える方法を見つけなければなりません。
Pandas には、isnull() という DataFrame 内の欠損値を見つける関数が用意されています。
isnull() 関数はそのまま使用できます。
df.isnull()
これはブール値の DataFrame を返し、そこにもともと存在していたデータが Truely missing か Falsely missing かを示します。 出力は次のようになります。
これらすべての欠損値を置き換えることができる方法が必要です。ほとんどの場合、欠損値の選択はゼロと見なすことができます。 データサイエンティストや分析対象のデータのユースケースに応じて、他のすべてのデータの平均、またはおそらくその周辺のデータの平均と見なされることもあります。
DataFrame 内のすべての欠損値を埋めるには、そのように使用される .fillna() 関数を使用します。
df.fillna(0)
上記では、すべての空のデータに値 0 を入力しています。 指定した他の数値でもかまいません。
データの重要性はいくら強調してもしすぎることはありません。データ自体から答えを得るのに役立ちます!. 彼らが言うデータ分析は、デジタル経済の新しいオイルです。
この記事のすべての例を見つけることができます ここ.
詳細については、こちらをご覧ください Python と Pandas によるデータ分析のオンライン コース。