Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

データ分析

Python × Pandasでデータサイエンス入門。平均値、標準偏差などを取得する方法の解説

超初心者にわかりやすくPandasの超基本的な使い方や機能を使い方を解説。平均値、標準偏差などの統計量を取得する方法の解説

今回はPythonを使ったデータサイエンスの第1歩とも言える、超定番ライブラリPandasの基本的な使い方を解説します。PandasとはデータフレームというPandas固有の型のオブジェクト(エクセルの表データのようなイメージです)を作り、上手く処理してくれる便利なライブラリです。使いこなすことは本格的なデータ分析に必須の技能といえるでしょう。

難しそうに感じるかもしれませんが、Pandasは初歩的なPythonの文法を学び終わっただけという段階のレベルでも十分使えるので安心して、そしてどんどん使っていきましょう。

結局、よく使う使い方は毎回同じようなものなので勝手に手が覚えます。習うより慣れろの精神で毎日短時間でも触るようにすればどんどん上達すると思います。

今回使うPandasの機能一覧

今回紹介するPandasの属性やメソッドは次の通りです。あくまでPandas全体の機能のごく一部です。

機能
(以下データフレームをDFとする)
Pandasのコード
(クリックでPandas公式ドキュメントへ)
データ読込pandas.read_csv
DFの行と列の数を確認pandas.DataFrame.shape
DFのインデックス(行タイトル)確認pandas.DataFrame.index
DFのコラム(列タイトル)確認pandas.DataFrame.columns
DFの各列の概要を確認pandas.DataFrame.info
DFの先頭◯行分だけ表示pandas.DataFrame.head
DF内部の欠損値を確認pandas.DataFrame.isnull
DFの各列の要約統計量を確認pandas.DataFrame.describe
DFの平均値を確認pandas.DataFrame.mean
DFの中央値を確認pandas.DataFrame.median
DFの標準偏差を確認pandas.DataFrame.std

今回はよく使うであろうメソッドなどのうち、上記のようなごく一部の超基本的な機能だけの紹介となりますが、これらの基本的なものに慣れておくだけでもかなり今後のPandas学習の一助になると思います。

これらの基本機能の実際の使い方・コード例は以下の「Pandasの基本的な使用例」で紹介していきます。

使うデータ:KaggleのタイタニックのCSVデータ

Pandasの基本的な使い方を学ぶためには統計データが必要です。自分で作ってもいいのですが時間がかかって面倒なだけですし、綺麗に整頓された使いやすいデータで、かつそれなりに本格的な?データを使いたいところです。

そうしたPythonのデータサイエンスの練習として使えるデータはネットでいろいろ公開されています。たとえば有名どころでは日経平均の株価のデータです。

ですが今回は世界的データサイエンスコンペティション(競技大会)として最大級の有名なKaggleで用意されている、タイタニックのデータ(csvファイル)を利用することにします。

まずは次のリンクからKaggleの当該ページへ飛んでください。

Kaggle: Titanic – Machine Learning from Disaster

そのページを少し下へ見ていくと、次の画像のように「Download All」というボタンがあります。

このボタンを押してデータをダウンロードできます。ダウンロード先はPythonのコードを書くファイルと同じフォルダにしておくといろいろ都合が良いと思われます。

なおKaggle用の簡単なDockerコンテナを作る方法は以下の記事で解説しています。Dockerとは何かといった本格的な細かいことは省いた解説ですが、Docker入門としてぜひ試して見てください。

Pandasの基本的な使用例

pandasライブラリを読み込む

import pandas as pd

このようにしてpandasライブラリをPythonに読み込みます。

「as pd」とすることで、毎回「pandas」と書く必要がなく「pd」と書くだけですみ、省エネ?ができます。

CSVファイルからデータを読み込み、データフレームオブジェクトを作成

test_df = pd.read_csv('読み込みたいcsvファイルのパス')

今回は、test.csvファイルを読み込んだ場合を考えて例えば次のように入力します。

test_df = pd.read_csv('/workspace/.devcontainer/dataset/test.csv')

このようにして、右辺で対象となるcsvファイルを読みこみ、Pandas独自のデータフレーム(DataFrame)というオブジェクトを作成し、それを左辺の変数「test_df」に代入しました。

なお変数名で「_df 」とつけているのは、それがデータフレーム」であることを明示したいからです。このへんの命名ルールは人それぞれ、業務現場それぞれでしょうか。

こうしてtest_dfというデータフレームが出来上がったので、ここからはデータフレーム型(以下DF)が有する様々なメソッドなどが使えるようになります。

あとはもう上「今回使うPandasの機能一覧」で紹介したメソッドなどを使っていくだけです。

DFの行と列の数を確認

上でtest_dfというデータフレームオブジェクトをすでに作成しているので、

pandas.DataFrame

という部分はすべて、

test_df

で置き換えることができます。

さてそのtest_dfの行がいくつあるのか、そして列がいくつあるのかをそれぞれ確認してみましょう。上「今回使うPandasの機能一覧」で紹介したように、

print(test_df.shape)

結果は行と列のタプルで、

(891, 12)

DFのインデックス(行タイトル)確認

print(test_df.index)

結果は、

RangeIndex(start=0, stop=891, step=1)

このままだとわかりにくいので、例えば次のようしてみました。

index_range = test_df.index
for i in index_range[880:891]:
    print(i)

こうすると結果は、

880
881
882
883
884

DFのコラム(列タイトル)確認

print(test_df.columns)

結果は、

Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

DFの各列の概要を確認

print(test_df.info)

結果は、

RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
None

DFの先頭◯行分だけ表示

print(test_df.head(5))

結果は、

DF内部の欠損値を確認

print(test_df.isnull)

結果は、

なお、pandas.DataFrame.sumを使って、

print(test_df.isnull().sum()) 

とすると、各列ごとに欠損値がいくつあったのかその合計を出せます。次のようになります。

PassengerId      0
Survived         0
Pclass           0
Name             0
Sex              0
Age            177
SibSp            0
Parch            0
Ticket           0
Fare             0
Cabin          687
Embarked         2
dtype: int64

DFの各列の要約統計量を確認

print(test_df.describe())

結果は、

このように、引数に何も設定しないと基本的には上から順番に、

  • count: 各列の要素の個数
  • mean: 各列の平均値
  • std: 各列の標準偏差
  • min: 各列の最小値
  • 25%: 各列の第1四分位数
  • 50%: 各列の第2四分位数
  • 75%: 各列の第3四分位数
  • max: 各列の最大値

という情報が表示されます。

平均値、中央値、標準偏差を確認

3つまとめていきましょう。それぞれmean属性、median属性、std属性を使って、

print(test_df.mean)
print(test_df.median)
print(test_df.std)

結果は、

このようになります。

今回の実行結果はすべて文字と数字ばかりで決してグラフィカルに「可視化」したとは言えませんが、なんでもかんでも流行りにのって可視化すればいいというものではなく、逆にグラフィカルでないからこそ数字そのものを客観的に冷静に、そして価値中立的に見られるというメリットもあります。

そしてPandasを使ったデータの可視化という点で便利なおすすめライブラリydata-profilingというものの紹介をこちらの記事で書いていますので続けてご覧ください。

どうだったでしょうか。どれも超基本的な機能ばかりでしたが、やってみれば意外に簡単にデータの概要や平均値などの統計量を確認できることがわかってもらえたでしょうか。

とにかくPythonの初級文法がそれなりに理解できていればPandasはどんどん使えます。そしてそれを基にしてデータ分析とデータサイエンスの世界に入っていけます。ぜひPandasを日常的に使ってみてください。

世界最大級のオンライン学習プラットホームUdemy(ユーデミー)では、Pythonやデータ分析の様々な講座が用意されています。大幅に割引されるセールもよく開催されています。

Udemyでお得なデータ分析・データサイエンス講座を探す
愛を分かち合いましょう