現代では機械学習スキルの需要が高まってきています。
この記事では機械学習で必ず利用するPythonのモジュール「Pandas」について紹介します。
以下に当てはまる項目がある場合は参考にしてください。
・機械学習のスキルをつけたい
・pandasって何ができるのか知りたい
・Pythonでどうやってデータ分析できるの?
・プログラムでのデータ分析の基礎を学びたい
最後まで読むと「Pandas」を利用してデータ分析(表計算など)を行う上での基本を学ぶことができます。
全てを説明するというより、自分で「なにができそうか」など想像できるようになり、調べながら実践してくことができることを目標にしています。
具体的には、「Pandas」について説明したあと、具体的なコードをふまえながら、どういったことができるのか説明していきます。
最後に効率的に学んでいくことができる方法について紹介します。
機械学習のもっとも基礎となる「NumPy」については『【NumPy入門】機械学習はここから始める|計算方法、配列の作り方、配列の変形』を参考にしてください。
「Pandas」って?
機械学習を行っていくにあたり避けて通れないツールの1つです。
Pythonのモジュールの1つで、表や時系列データをを操作するための演算がまとまっています。
「え?そんなのExcelでよくない?」と思った方もいると思います。
しかし、機械学習となるとデータ量が膨大です。
大量のデータを、繰り返し分析することができるのが利用するメリットです。
具体的にはリスト形式のデータを扱う「Series」と表形式のデータを扱う「DataFrame」があります。
「Pandas」の詳細は公式サイトに記載されています(英語ですが、、、)。
それでは「Pandas」の使い方、具体的には「Series」と「DataFrame」がどういったものなのか説明してきます。
上から順番に実行して理解を深めてください。
値やデータ構造を変えながら、試していただけるとなお良いと思います。
「Series」でリストデータを扱う
前回、配列を扱う「NumPy」について説明しましたが、違いは「インデックス」という名前がついていることです。
まず以下を実行して必要なモジュールを読み込んでください。
import pandas as pd
from pandas import Series
2行はなくても、pandas.Series
とすれば、実行できますが、都度入力するのが面倒なので、あらかじめ用意しておくことをオススメします。
実際に「Series」データを作成します。
obj = Series([3, 6, 9, 12])
print(obj)
ーーーーーーーーーーーーー
【出力】
0 3
1 6
2 9
3 12
dtype: int64
左側の「0,1,2,3」がインデックスになります。
指定しなければ、このように「0」から連番で割り振られます。
インデックス「2」のデータを出力する際は以下を実行します。
print(obj[2])
ーーーーーーーーーーーーー
【出力】
9
データだけ取得したい場合は以下を実行してください。
print(obj.values)
ーーーーーーーーーーーーー
【出力】
[ 3 6 9 12]
「index関数」を使うとインデックスだけ取り出すこともできます。
また、インデックスを文字列にすることもできます。
test_point = Series([90, 65, 87, 74], index=['Taro', 'Yuki', 'Takashi', 'Hanako'])
print(test_point)
ーーーーーーーーーーーーー
【出力】
Taro 90
Yuki 65
Takashi 87
Hanako 74
dtype: int64
ここでは4名の名前をインデックスにして、ポイントデータを扱っています。
ここの”Taro”のポイントは以下のように取得できます。
test_point['Taro']
指定した条件を満たしたものだけ取り出すことも可能です。
80ポイント以上のSeriesを取り出してみます。
upper_80 = test_point[test_point > 80]
print(upper_80)
ーーーーーーーーーーーーー
【出力】
Taro 90
Takashi 87
Seriesに名前をつけることもできます。
ここでは「テスト結果」という名前をつけます。
test_point.name = 'テスト結果'
print(test_point)
ーーーーーーーーーーーーー
【出力】
Taro 90
Yuki 65
Takashi 87
Hanako 74
Name: テスト結果, dtype: int64
最後に出力されている通り、Seriesに名前をつけることができました。
Seriesのインデックス自体に名前をつけることも可能です。
インデックスには「名前」という名前をつけます。
test_point.name = 'テスト結果'
test_point.index.name = '名前'
print(test_point)
ーーーーーーーーーーーーー
【出力】
名前
Taro 90
Yuki 65
Takashi 87
Hanako 74
Name: テスト結果, dtype: int64
おおよそ、どういったことができるのか、できそうなのか、見えてきたと思います。
ソートしたり、並べ替えたり、いろいろなことができます。
こちらに関数一覧があるので、実際に自分がやりたいことに合わせて調べてみてください。
「DataFrame」で表形式のデータを扱う
もっともよく使用するフレームで、表データを扱うことができます。
イメージとしては大量のデータを扱えるExcelと思ってください。
データを表形式で整理して、分析することができるのです!
実際に表データを作成していきます。
「DataFrame」には数多くの作成方法があります。
最も簡単なやり方としては、クリップボードのデータを使用する方法です。
Excelなどの表データをコピーして、以下のコードを実行すれば作成されます。
sample_data = pd.read_clipboard()
その他にもファイルからデータを読み取ったり、さまざまなやり方があります。
ここではPythonの辞書(dict)を利用して作成します。
先ほどは4名のテスト結果をリスト化しましたが、ここでは教科別にまとめてみます。
data = {
'Name':['Taro', 'Hanako', 'Takashi'],
'Japanese':[83, 95, 60],
'Math':[82, 68, 78],
'English':[72, 83, 95]
}
test_frame = DataFrame(data)
print(test_frame)
ーーーーーーーーーーーーー
【出力】
Name Japanese Math English
0 Taro 83 82 72
1 Hanako 95 68 83
2 Takashi 60 78 95
ここの列名だけを取り出したい場合は以下を実行してください。
print(test_frame.columns)
ーーーーーーーーーーーーー
【出力】
Index(['Name', 'Japanese', 'Math', 'English'], dtype='object')
この他にも以下のことが実現可能です。
・列の追加/削除 ・先頭だけ取り出す ・末○個だけ取り出す ・値の代入 ・データのソート
Excelでできることは大半実現可能です。
こちらにできることが記載されているので参照してください。
効率的に学んでいく方法
最初から独学で始めようとしても、「なにがなんだかわからない」といった状態になると思います。
ぼくも最初そうでした。。。
最初の基礎についての学習だけ一貫したサービスで学び、細かい機能や関数などに関しては必要になったら自分で調べていけばよいです。
基礎さえ学ぶことができたら、「なにができそう」なのか予測することができるようになります。
プログラミングができる人は、すべて頭の中にあるのではなく、「どういったことができるのか」理解しており、状況にあわえて、使い分けているのです!
そこで最初の学習でオススメなのが『Udemy』です。
なにより良いのが20時間にもおよぶオンライン講座が定期的に95%OFFで購入できることです!
10万以上もの講座があるので、自分が知りたいことにフォーカスしたものから、全体像を把握できる講座まであります。
現在は定期的に行われている値下げ期間なので、1万円以上する講座がなんと「1,000円代!!」で受けることができます。
オンライン講座のため、電車の中でも勉強でき、買い切りなので、何度でも受講することができます!
是非、勉強のツールとして利用してみてください。
最後に
なんらかのプログラミングを学習していくのに大事なのは「概要」を把握することです。
全ての関数を記憶して、すべてのコードを何も参照せずに書いていくことは不可能です。
おおよそ何ができるのかを把握しておけば、「できるかも」という考えから調べて、実行していくことができます。
最初はどういった仕組みでなにが動いているのか把握するようにしましょう!
独学で勉強することも良いですが、大半の技術書などは細かい機能や関数の説明が含まれており、最初から最後まで学ぼうとすれば膨大な時間がかかってしまいます。
おおよそまとめられているオンライン講座で基礎を学び実践していけば、最速で自分のスキルにすることができます。
諦めずに学習を続けてください。
最後まで読んでくださり、ありがとうございました!!!
コメント