スポンサーリンク

【Python】データ分析に超便利な「pandas」の使い方を解説!!(その①)

これまではANACONDA(アナコンダ)のインストールとJupyter Notebookに基本的な使い方を見てきました。

今回はJupyter Notebookでデータ分析をするうえで欠かせない「pandas」というライブラリの使い方を紹介していきます。

Pandasでできること

まずPandasは何ができるの?? って話なのですが、簡単に言うとPandasはExcelで縦横(行列)の表を操作するみたいな事がPythonの環境でもできるようにしてくれるライブラリです。

Pythonを使う人の大半の目的が、データ分析に必要なHTMLやJSONなどのデータをウェブから収集するウェブスクレイピングのしやすさにあると思うので、これによって集めたデータを分かりやすく整えてくれる panda はpythonでデータ処理を行う上で必須ライブラリでしょう。

Excelみたいな縦横2次元のデータ構造をPandasでは「DataFrame(データフレーム)」と言い、横一列or縦一列みたな状態のデータを「PandasDataframe」と呼びます。ちなみにpythonでデータ型の確認は「print(type(変数名))」で確認できます。

今回のシリーズの記事で行っていくことは以下のような処理です。

・欠損地の取り扱い

・ラベルの位置の自動調整

・データの集計と要約

・条件を満たすデータの抽出

・データセットの結合

・データセットの変換

pandasのインストール

多分AnacondaだとPandasはデフォルトでインストールされているので、「Jupyter Notebook」を起動してImport pandasで有効化できると思いますが、Python3.6単体でインストールしている人はコマンドプロンプト(cmd.exe)を開いてpipコマンドでインストールしてください。

pandasは便利なのですが、初心者が詰まりやすいポイントとしてはライブラリーを有効化する際、「import pandas」ではなく、「import pandas as pd」と入力しなければいけない点です。

サンプルデータの取得

まずはPandasでのデータ処理に使うサンプルデータを呼び出してきます。サンプルデータは用意されていないので、機械学習用のライブラリである「Scikitlearn」にあるサンプルデータを使っていきます。「Scikitlearn」はAnacondaならデフォルトでインストールされているので、イカのコマンドで動きますが、そうでない場合はコマンドプロンプトからpipでインストールしてください。

#ライブラリの読み込み
from sklearn.datasets import load_iris
import pandas as pd

#クラスの呼び出し
iris = load_iris()

#データフレームに変換する
sample=pd.DataFrame(iris.data, columns=iris.feature_names)

引数のcolumnsは列を意味しており、columns=iris.feature_namesと記述することで、今回は列名はiris.feature_namesというリストの中身を使うと指定しています。row(index)の方は何も指定しないと0から始まる数値が自動的に割り振られていきます。

そして、実行すると以下のようなデータになっていると思います。↓

ラベルからデータを抽出する

Pandasは様々な関数でデータを抽出することができますが、Pandasでデータフレームの中から特定データ抽出する方法は「.loc」と「.iloc」の2つのやり方があり、文字も似ているのでややこしいというのが少しネックですね。ただどちらも便利なので覚えておいて損はありません。

まずは.locでのデータ抽出を行っていきます。上述したようにPandasDataframeは.loc[]でデータを抽出することができます。Dataframeの場合は行と列のラベルをそれぞれ指定します。

#7行目1列のデータを抽出する
sample.loc[7,'sepal length (cm)']

※結果
5.0

また特定の1つのデータだけでなく、行(列)すべてのデータを抽出したい場合は、片方を「:」とすることで抽出できます。

#7行目の数値を全部抜き出す
sample.loc[7,:]
#7行目の数値を全部抜き出す
sample.loc[7]


※結果(2つとも書き方は違いますが処理は同じです)
sepal length (cm)    5.0
sepal width (cm)     3.4
petal length (cm)    1.5
petal width (cm)     0.2
Name: 7, dtype: float64

反対に特定の列を抽出したい場合は以下のように記述します。

#1列目('sepal length (cm)'の列)のデータを全部抽出する
sample.loc[:,'sepal length (cm)']


#1列目('sepal length (cm)'の列)のデータを全部抽出する
sample['sepal length (cm)']


※結果
0      5.1
1      4.9
2      4.7
3      4.6
4      5.0
5      5.4
6      4.6
7      5.0
8      4.4

.loc[]を使って抽出するよりも各処理の2行目に書き方の方が覚えやすかったので、自分はそっちを使っています。次は.ilocを使ってデータの抽出を行っていきます。

#サンプルデータの1~10列目までの(㎝)の数値を抽出する
sample.iloc[1:10]['sepal length (cm)']


※結果
1    4.9
2    4.7
3    4.6
4    5.0
5    5.4
6    4.6
7    5.0
8    4.4
9    4.9
Name: sepal length (cm), dtype: float64

飛び飛びの2つの列のデータを同時に抽出したいときは以下のように記述します。

#1列目と4列目のデータの最初の10個の数値を抽出する
sample.iloc[1:10,[0,3]]


※結果


ちなみに[0,3]で1列目と4列目を指定していることになるのは、pythonの仕様です。というのもpythonは1からではなく、0から始まるため私たちが普通に考えて1番目のものはpythonにとって0番目のデータになります。ここがpythonでのデータ処理で注意すべき点ですね。

スポンサーリンク

比較演算子(真偽値)を使ったデータ抽出

Pandasのデータフレームの面白い点としては、データが格納されている変数に対して真偽値を投げるだけで、データの1つ1つの数値にTRUE・FALESEを返す比較演算の処理ができるという点ですね。

#2以上ならTrue、未満ならFalse
sample>2

するとこんな感じで配列の要素1つ1つに真か偽かを返してくれます。

これの何が便利なのかという話なわけですが、この比較演算の処理ができるということはif文でリストに対して行うような処理をデータフレームにもそのままできるのです。

なので、こういう感じに特定の条件を満たす配列だけを抽出するということもできます。

#sepal width (cm)が4以上のデータを抽出する
sample.loc[sample['sepal width (cm)']>4]


※結果

また2つ以上の条件抽出する場合は以下のように&を使って記述します。

#sepal width (cm)が3.5より大きくかつpetal length (cm)が1.5より大きい配列を抽出する
sample.loc[(sample['sepal width (cm)']>3.5)&(sample['petal length (cm)']>1.5)]



※結果

終わり

とりあえずデータフレームの基本的な操作は以下のような感じです。これだけでも簡単なデータ操作はできると思いますが、よりPandasを使いこなすため、次はSeriesの操作と「リストをデータフレームの変換する」・「csvの読み込み」・「処理したPandasのデータをcsvに保存する方法」などついて説明していきます。

→(続き)【Python】データ分析に超便利な「pandas」の使い方を解説!!(その②)

スポンサーリンク

プログラミングの独学はとても難しい


プログラミングは小学校の義務教育にも導入され始めており、これから社会人として生きていく上でプログラミングはもはや出来て当たり前、出来なれば論外というエクセルレベルの必須スキルになりつつあります。そしてそういう話を聞いて参考書なりを購入して独学でプログラミング勉強しようと思っている人も少なくないでしょう。しかしプログラミングを独学で勉強し始めようと思うものの



・「分からない箇所で詰まって挫折してしまった」

・「勉強する時間が足りない」

・「ネットの記事だと情報が断片的でよくわからない」

・「コードのエラーの原因が分からない」



という壁にぶち当たって、プログラミングの勉強を止めてしまう方が少なくありません。独学でプログラミングを勉強してる時間のほとんどはつまづいている時間です。実際僕も最初のころ独学でプログラミングを勉強していた頃はエラーの原因が分からず丸1日を不意にしてしまった・・・そんな苦い経験がありました。



それで僕は一度はプログラミングの学習を諦めてしまいましたが、就活で現実を知る中で「プログラミングを勉強して、いずれフリーランスとして自由な生き方がしたい」「エンジニアとして若いうちから高収入を得たい」という気持ちから一念発起して「侍エンジニアのwebサービスコース」に申し込み、プロのエンジニアの方に対面でマンツーマンでPythonによるWebサービス作り方とWeb技術の基本を教えてもらい、ようやくプログラミングが理解でき、今ではエンジニアとしてそこそこの暮らしができるようになりました。





侍エンジニアでは、とりあえずプログラミングやインターネットの基本を知っておきたい人から、HTML・cssなどでWebサイトやWebアプリを作ってみたい人やPythonを勉強してデータサイエンティストやAIエンジニアになりたい人まで幅広いニーズに応えた様々なコースが用意されています。



IT業界と言ってもエンジニアの仕事はプログラミング言語次第でサーバーから機械学習・ディープラーニングまで多種多様ですし、侍エンジニアの無料レッスン(カウンセリング)を受けてみて、自分のやりたいITの仕事は何なのか?を見つけるのがエンジニアへの第一歩になります。ちなみに今侍エンジニアの無料レッスンを受けると1000円分のAmazonギフト券がもらえるので、試しに受けてみるだけもお得です。


自分は半端に独学やオンラインスクールで勉強して金と時間を無駄にするくらいなら、リアルのプログラミングスクールに通ってしっかりプログラミングを勉強した方がいいと思います。ちなみに今、侍エンジニアに申し込むと、25歳以下の学生の方であれば、受講料が20%OFFになるので超お得です。


そして、プログラミングは大勢で授業を受けたり漫然とオンライン学習をするよりも自分が分からない箇所をピンポイントでプロの講師に直接質問して、ちゃんと納得するというスタイルの方がお金は確かに少し掛かりますが、独学で学ぶよりも絶対にモノになります。


シェアする

  • このエントリーをはてなブックマークに追加

フォローする