関連言語

【1分で理解】Pythonのデータ分析でできること4選!コード例あり!

これからPythonを学習する方の中には、

  • Pythonを使用してのデータ分析では何ができるの?
  • わざわざPythonを覚えてまでデータ分析を行う必要があるの?

と思っている方もいるでしょう。今回はPythonでできるデータ分析についてみていきましょう。

本記事はこれからPythonを学習しようか悩んでいる方や学び始めたばかりの初学者の方PythonとRのどちらかを学習しようと検討している方などを対象にしています。例としてエクセルのデータ分析が出てきますが、必ずしも現在エクセルを触っている必要はありません。

この記事でわかること
  • Pythonでできるデータ分析がわかります
  • エクセルやRに対して優位な点がわかります
  • 時間をかけてPythonを学んでも大丈夫だということがわかります

Pythonでのデータ分析

この後説明しますが、Pythonでデータ分析をするメリットで共通するものとして、

  • 自動化できる:メール送信やExcelの入力など、作業を自動化できます。データ分析においても処理をまとめておくことによりデータが変わっても同じ処理を自動化することができます。
  • ライブラリが豊富:グラフ作成や数値計算など、目的に応じて便利なライブラリが用意されていますので、簡単に高品質な解析を始めることが可能です。
  • 複雑な解析手法が簡単に利用可能:複雑な解析手法であっても簡単に使用することが可能です。
  • AI/機械学習/深層学習モデルの開発が可能:AI/機械学習/深層学習モデルを開発することができます。

などがあります。具体的にどのような部分がPythonで分析を行うメリットなのか、細かく見ていきましょう。

Pythonで実際にどんなことができるの?

○Pythonデータ分析でできること

  1. データの集計
  2. データクレンジング
  3. データ可視化
  4. データ分析

①データの集計

Pythonではpandasやnumpyなどのライブラリを使ってデータの読み込みや加工、集計などを簡単に行うことができます

売上データや顧客データなどをCSVやExcelファイルから読み込み、日付や地域などでグループ化して、合計や平均などの統計量を簡単に算出することができます。エクセルでは、複数のシートやファイルを扱うのが大変ですが、Pythonでは一括で処理できます。

例えば、以下の例では東京都の気温(最高気温、最低気温、平均気温)、湿度(平均湿度)が入ったデータをcsvファイルから読み込んでいます。このように簡単に呼び出すことが可能です。

import pandas as pd

data = pd.read_csv('./data.csv', encoding='cp932')
data

集計も簡単で、特に基本的な統計量などは簡単に処理可能です。以下の例ではそれぞれのデータの数、平均値、標準偏差、最小値、最大値、それにデータを四等分したときの数値を示す四分位範囲を簡単に求めることが可能です。

data.describe()

同様に、各データの相関係数もデータのまま簡単に計算することが可能です。

data[['平均気温(℃)', '最高気温(℃)', '最低気温(℃)', '平均湿度(%)']].corr()

これらの作業はエクセルでも実施は可能ですが、データを呼び出し計算式を入れ、それを読み込んだデータと同じ列に入れたり別シートに入れたりと、シート内が煩雑になったり毎回同じ作業が発生したりします。

また、「基本統計量」のコマンドで出す場合はデータが変わるたびに出力される値をどこかに出力しなくてはならないため、これもまたシートが煩雑になる要因になります。

②データクレンジング

Pythonでは、pandasやnumpyなどのライブラリを使って、データの欠損値や外れ値、重複値などを検出し、削除や補完などの対処を行うことが可能です。例えば、データに抜けが存在する場合や、データに異常に高い値や低い値がある場合などに簡単に対応できます。

エクセルでは、手動でチェックしたり、データごとに対応する必要がありますが、Pythonでは自動で処理することが可能です。例えば先ほどと似たデータで例に見ていきましょう。

import pandas as pd

data2 = pd.read_csv('./data2.csv', encoding='cp932')
data2.describe()

先ほどとほぼ同じデータですが、今回のデータは

  • 平均気温のデータ数が最低気温のデータ数より少ないのでデータが書欠けているのではないか?
  • 最低気温の最高値が93度となっており、明らかにおかしい

ということがわかります。今回は平均気温が欠けているデータを見てみましょう。

data2[data2['平均気温(℃)']!=data2['平均気温(℃)']]

データを見ると、151番目と178番目のデータで平均の気温のデータが欠けているようです。このまま解析すると解析結果が正しく出ない可能性があるため、このデータを処理する必要があります。今回はわかりやすく、先ほどの統計量で出てきた平均値「17.724725」で埋めてあげましょう。

※本来は全体の平均値ではなく、7月の平均値で埋めてあげるなどの処理をしますが、今回は説明のための全体の平均値で埋めます。もちろん「7月の平均を出す」などの処理も簡単に行えます。

data2['平均気温(℃)'] = data2['平均気温(℃)'].fillna(17.724725)
data2.query("index==151 or index==178")

このようにPythonで行うと、各データごとに行う処理を一括で処理することができます。

今回は説明のために欠損値を抜き出して処理していますが、一括で自動処理する場合は以下の方法でも可能です。

data2 = data2.drop('Unnamed: 0', axis=1)
data2.fillna(data2.mean(), inplace=True)

また、データ全体を見渡し、欠損値の数を確認してから一気に埋める方法もあります。まずは欠損値の数を確認します。

data2.isnull().sum()

次にmaskと組み合わせて欠損値を一気に埋めます。

data2['平均気温(℃)'] = data2['平均気温(℃)'].mask(data2['平均気温(℃)'].isnull(), data2['平均気温(℃)'].mean())
data2.query("index==151 or index==178")

③データ可視化

Pythonでは、matplotlibやseabornなどのライブラリを使って、データをグラフやチャートなどで可視化することができます。棒グラフや折れ線グラフ、ヒストグラムや散布図などで表示して、トレンドや相関などを分かりやすく見ることができます。

エクセルでは呼び出したデータの数などに合わせて毎回グラフを調整する必要がありますが、Pythonならデータ数が変わっても同じようにグラフを作成することが可能です。

import matplotlib.pyplot as plt
import japanize_matplotlib

data2 = pd.read_csv('./data2.csv', encoding='cp932')
data2['平均気温(℃)'] = data2['平均気温(℃)'].fillna(17.724725)

plt.boxplot([data2[data2.columns[1]], data2[data2.columns[2]], data2[data2.columns[3]], data2[data2.columns[4]]], labels=[data2.columns[1], data2.columns[2], data2.columns[3], data2.columns[4]])

上の図は先ほど欠損値を埋めたデータを使用して、ボックスプロットを書いたものです。最初にデータを確認した際に気になっていた飛び値も一目でわかりますし、グラフの設定を細かくせずに、簡単にグラフを描くことができます。

④データ分析

Pythonでは、scipyやstatsmodelsなどのライブラリを使って、データに対して統計的な分析を行うことができます。平均や分散、標準偏差などの基本統計量を求めたり、回帰分析や因子分析などの多変量解析を行ったりすることができます。

Pythonでの統計解析はTech Teacher Blog内にも非常に多くの解説がありますので、いくつかご紹介します。

【1分でわかる】初心者でも簡単にPythonで決定木の実装ができるやり方を学ぶ!機械学習の基礎である決定木を、概要の解説からPythonで初心者でも簡単に実装する方法、結果の表示のやり方までわかりやすく解説していきます。また、graphvizで表示する方法まで合わせて解説しています。本記事により適切に決定木を用いてデータの分析に役立てていただければと思います。...
【1分でわかる】初心者でも簡単にPythonでSVMの実装ができるやり方を学ぶ!Pythonで機械学習をする際に、SVM(Support Vector Machine)をはじめにやってみる方も多いと思います。この記事はSVMを通した機械学習と、SVMについてPythonでの実装を中心に初心者でも簡単に理解できるようわかりやすく解説しています。...

エクセルでも基本統計量は求めることが可能ですが、データに合わせて動的に求めることができなかったり、分析手法に関してはソルバーなどを使用して解決する必要があります。以下のリンクではエクセルで分析する方法を紹介しています。

【1分で理解】初心者でも簡単にできるエクセルで主成分分析する手順を解説!初心者でも簡単にエクセルで主成分分析を行う方法見ていきます。主成分分析というとPythonで行うイメージが強いと思いますが、エクセルを用いて主成分分析を行うとともに、その結果の見方まで確認してみましょう。実際のエクセルの画面を示しながら進めているので、一緒に手を動かしながら学べます!...
3分で理解する!エクセルでの重回帰分析手順とエラーの対処法エクセルユーザーではない人でもわかりやすく、重回帰分析をエクセルで行う方法について図解します。また、重回帰分析を行ったときによくあるエラーが発生した場合の対処法も解説します。...

Pythonを学習するには

このようにデータ分析においても非常に便利なPythonですが、以下のページで学習のロードマップを示しているので、学習の参考にしてください。

【初学者必見】おすすめ教材あり!Python独学の最適ロードマップ!Pythonを独学で習得するためのロードマップをまとめました。全4ステップ内でおすすめの無料学習サイトと使うべき3つの本を知ることができます。なるべくお金をかけずにPythonを学びたい方は必見です。...

また、こちらのシリーズではPythonについて基礎から学ぶことができるように順を追って解説されています。学習の参考にしてください。

Pythonとは?特徴やできること、学習するメリットを解説次のページ この記事では、「Pythonとは何か?」について解説していきます。 ・Pythonってよく聞くけど、どんな特徴がある...

まとめ

今回はPythonでできるデータ分析についてみてきました。Pythonはデータ分析において非常に優秀なツールで覚えて損はありませんので、ぜひこの内容を参考にしてマスターしてください。