PythonライブラリのPandasについて詳しく知りたいです。
Pandasは主にデータ分析などでよく使われる。
最近、注目度が高まってきている人気ライブラリだ。
✔️ 本記事のテーマ
Pandasについて(Pythonライブラリ)
✔️ 読者さんへの前置きメッセージ
本記事は「Pandas(Pythonライブラリ)」について書いています。
この記事を読むことで「Pandasの使い方や便利な関数」を理解できます。
Pandasはデータ分析によく使われるPythonライブラリです。
ただし、Pandasはその便利さゆえに機能が多く、使い方に迷うこともあるでしょう。
そこでこの記事ではPandasの使い方を関数ベースで解説します。
また、イメージしやすいように、実際のデータ分析を行う手順に解説しています。
よく使う関数をまとめたので、この記事で解説している関数さえ知っておけば、ある程度は使うことができます。
それでは、Pandasの使い方を解説していきましょう。
PythonでPandasを使うためには(準備)
Pandasはサードパーティ製のPythonライブラリです。
そのためPythonからPandasを使えるようにするには、いくつかの準備が必要です。
具体的には、以下の作業が必要です。
- pandasを環境にインストールする
- pandasをimportする
順番に詳しく解説しましょう。
pandasを環境にインストールする
まず使用しているPython環境にPandasライブラリをインストールしましょう。
ターミナル(Windowsならコマンドプロンプト)で以下のコマンドを実行すればOKです。
pip install pandas
# 場合によってはpip3 install pandas
「Successfully installed ~」と表示されていれば、Pandasライブラリのインストールが成功しています。
pandasをimportする
Pandasライブラリのインストールが完了したら、次はPythonモジュールでimportしましょう。
importをすることでそのモジュールの中で、pandasライブラリを使うことができるようになります。
モジュールの一番上に以下の記述を書けばOKです。
import pandas as pd
なお、pandasライブラリは一般的に「pd」という名称でimportされます。
PythonでPandasデータを確認する
PandasのDataFrameはExcelの表のようなデータ形式です。
df = pd.DataFrame(
{
'社員番号': [345, 11, 567, 201, 108, 78, 22, 498],
'役職': ['リーダー', '部長', '平社員', 'リーダー', '課長', '課長', '部長', '平社員'],
'氏名': ['高橋 F助', '山田 A郎', '山本 H二', '伊藤 E男', '鈴木 C太', '田中 D平', '佐藤 B夫', '渡辺 G朗']
}
)
社員番号 | 役職 | 氏名 | |
0 | 345 | リーダー | 高橋 F助 |
1 | 11 | 部長 | 山田 A郎 |
2 | 567 | 平社員 | 山本 H二 |
3 | 201 | リーダー | 伊藤 E男 |
4 | 108 | 課長 | 鈴木 C太 |
5 | 78 | 課長 | 田中 D平 |
6 | 22 | 部長 | 佐藤 B夫 |
7 | 498 | 平社員 | 渡辺 G朗 |
なお、PandasのDataFrameについては
「PandasのDataFrameを徹底解説【コード付き】」の記事で詳しく解説しています。
Pandasのデータを確認するには以下の方法が便利です。
- df.headを使う
- df.tailを使う
- 列名で指定する
- 行数で指定する
順番に詳しく解説していきましょう。
df.headを使う
DataFrameのheadメソッドを使うことで、簡単にDataFrameの中身を確認することができます。
headメソッドは対象のDataFrameの先頭5行だけを表示します。
df.head()
社員番号 | 役職 | 氏名 | |
0 | 345 | リーダー | 高橋 F助 |
1 | 11 | 部長 | 山田 A郎 |
2 | 567 | 平社員 | 山本 H二 |
3 | 201 | リーダー | 伊藤 E男 |
4 | 108 | 課長 | 鈴木 C太 |
df.tailを使う
tailメソッドも便利なメソッドです。
tailメソッドは対象のDataFrameの後ろ5行だけを表示します。
df.tail()
社員番号 | 役職 | 氏名 | |
3 | 201 | リーダー | 伊藤 E男 |
4 | 108 | 課長 | 鈴木 C太 |
5 | 78 | 課長 | 田中 D平 |
6 | 22 | 部長 | 佐藤 B夫 |
7 | 498 | 平社員 | 渡辺 G朗 |
列名で指定する
DataFrameは表形式のデータなので、列名を指定して表示することができます。
以下のように指定することで、任意の列だけ抜き出して表示することができます。
df['氏名']
0 | 高橋 F助 |
1 | 山田 A郎 |
2 | 山本 H二 |
3 | 伊藤 E男 |
4 | 鈴木 C太 |
5 | 田中 D平 |
6 | 佐藤 B夫 |
7 | 渡辺 G朗 |
行数で指定する
逆に行数を指定して表示することもできます。
DataFrameの行数を指定するときは、locメソッドを使います。
例えば、1行目だけ表示して、データの構成を確認したいときは以下のようにします。
print_df = df.loc[1]
他にも例えば、1行目から3行目まで表示することも可能です。
print_df = df.loc[0:2]
社員番号 | 役職 | 氏名 | |
0 | 345 | リーダー | 高橋 F助 |
1 | 11 | 部長 | 山田 A郎 |
2 | 567 | 平社員 | 山本 H二 |
PythonでPandasデータを整形する
Pandasのデータを整形するときは以下の方法を使うときっと上手くいくでしょう。
- 列名を変更する
- 新たな列を追加する
- 値を昇順に並び替える
- 値を降順に並び替える
順番に詳しく解説していきましょう。
列名を変更する
表形式のDataFrameの列名を後から変更することも可能です。
以下のようにコードで列名を自由に変更することができます。
なお、引数inplaceをTrueに指定しないと、新たなDataFrameが生成されます。
df.rename(columns={'役職': '肩書き'}, inplace=True)
社員番号 | 肩書き | 氏名 | |
0 | 345 | リーダー | 高橋 F助 |
1 | 11 | 部長 | 山田 A郎 |
2 | 567 | 平社員 | 山本 H二 |
3 | 201 | リーダー | 伊藤 E男 |
4 | 108 | 課長 | 鈴木 C太 |
5 | 78 | 課長 | 田中 D平 |
6 | 22 | 部長 | 佐藤 B夫 |
7 | 498 | 平社員 | 渡辺 G朗 |
新たな列を追加する
以下のようにdf[‘新たな列名’]とすることで、DataFrameに新たな列を追加することができます。
なお、列を追加する関数として、assign()メソッドも用意されていますが、上記の方法のほうが簡単です。
df['性別'] = '男'
社員番号 | 役職 | 氏名 | 性別 | |
0 | 345 | リーダー | 高橋 F助 | 男 |
1 | 11 | 部長 | 山田 A郎 | 男 |
2 | 567 | 平社員 | 山本 H二 | 男 |
3 | 201 | リーダー | 伊藤 E男 | 男 |
4 | 108 | 課長 | 鈴木 C太 | 男 |
5 | 78 | 課長 | 田中 D平 | 男 |
6 | 22 | 部長 | 佐藤 B夫 | 男 |
7 | 498 | 平社員 | 渡辺 G朗 | 男 |
値を昇順に並び替える
DataFrameはExcelのように、値を使って並び替えを行うことができます。
sort_values関数を使用して、引数byでどの列を使うかを指定しましょう。
ascending=Trueとすることで、昇順並び替えになります。
df.sort_values(by="社員番号", ascending=True)
社員番号 | 役職 | 氏名 | |
1 | 11 | 部長 | 山田 A郎 |
6 | 22 | 部長 | 佐藤 B夫 |
5 | 78 | 課長 | 田中 D平 |
4 | 108 | 課長 | 鈴木 C太 |
3 | 201 | リーダー | 伊藤 E男 |
0 | 345 | リーダー | 高橋 F助 |
7 | 498 | 平社員 | 渡辺 G朗 |
2 | 567 | 平社員 | 山本 H二 |
値を降順に並び替える
逆に降順に並び替えたいときは、ascending= Falseとすることで、降順並び替えになります。
df.sort_values(by="sales", ascending=False)
社員番号 | 役職 | 氏名 | |
2 | 567 | 平社員 | 山本 H二 |
7 | 498 | 平社員 | 渡辺 G朗 |
0 | 345 | リーダー | 高橋 F助 |
3 | 201 | リーダー | 伊藤 E男 |
4 | 108 | 課長 | 鈴木 C太 |
5 | 78 | 課長 | 田中 D平 |
6 | 22 | 部長 | 佐藤 B夫 |
1 | 11 | 部長 | 山田 A郎 |
PythonでPandasの欠損データを処理する
データ分析を行うときは欠損データが邪魔になるでしょう。
DataFrameには欠損データを処理する関数も用意されています。
以下の関数を使うことで欠損データを削除する(または埋める)ことができます。
- df.isnull()
- df.fillna()
- df.dropna()
順番に詳しく解説していきましょう。
df.isnull()
まず、df.isnullを使って、欠損値があるかを確認しましょう。
df.isnullを使うと、DataFrameの要素を欠損値ならTrue、欠損値でなければFalseに置き換えることができます。
A | B | |
0 | 1 | |
1 | 11 | 12 |
2 | 22 |
df.isnull()
A | B | |
0 | False | True |
1 | False | False |
2 | True | False |
df.fillna()
欠損値を埋めるには、df.fillnaが簡単でかつ強力です。
df.fillnaに値を渡すことで、その値で欠損値を一律に埋めることができます。
df.fillna(999)
A | B | |
0 | 1 | 999 |
1 | 11 | 12 |
2 | 999 | 22 |
さらに、df.fillnaでは、列ごとに埋める値を指定することができます。
df.fillna({'A': 100, 'B': 200})
A | B | |
0 | 1 | 200 |
1 | 11 | 12 |
2 | 100 | 22 |
df.dropna()
欠損値を置き換えるのではなく、そのまま削除することもできます。
df.dropnaを使えば、欠損値が含まれる行を削除することができます。
A | B | |
1 | 11 | 12 |
df.dropna()
なお、引数で「how=’all’」と指定すれば、全ての列の値が欠損している行のみ削除することができます。
df.dropna(how='all')
A | B | |
0 | 1 | 200 |
1 | 11 | 12 |
2 | 100 | 22 |
PythonでPandasデータを集計する
groupby関数を使うことで、
DataFrameに対して、グループ分けして、統計量を算出することができます。
例えば、以下のようなDataFrameを用意します。
役職 | 給与 | |
0 | リーダー | 250,000 |
1 | 部長 | 1,000,000 |
2 | 平社員 | 200,000 |
3 | リーダー | 300,000 |
4 | 課長 | 400,000 |
5 | 課長 | 450,000 |
6 | 部長 | 900,000 |
7 | 平社員 | 220,000 |
このDataFrameに対して、「役職」列の値を使って、グループ分けを行います。
groupby関数によって役職ごとの平均や合計、最大値や最小値を算出することができます。
df.groupby('役職').mean()
役職 | 給与 |
リーダー | 275,000 |
平社員 | 210,000 |
課長 | 425,000 |
部長 | 950,000 |
df.groupby('役職').max()
役職 | 給与 |
リーダー | 300,000 |
平社員 | 220,000 |
課長 | 425,000 |
部長 | 1,000,000 |
df.groupby('役職').min()
役職 | 給与 |
リーダー | 250,000 |
平社員 | 200,000 |
課長 | 400,000 |
部長 | 900,000 |
Pandasについてもっとスキルをつけるなら
今回は、PandasでExcelデータを読み込む方法について解説しました。
Pandasはデータサイエンスの世界でよく使われるライブラリです。
Pandasについて基礎から実用まで学ぶためには以下の書籍がオススメです。
この書籍はPandasライブラリについて徹底解説されています。
Pandasライブラリは表計算ライブラリの使い方を理解していないと
その威力を存分に発揮できないのですがこの書籍はこの辺を上手に説明してくれています。
また、ライブラリ自体の解説だけでなく
機械学習において大事なデータクレンジングの方法など実践的な内容まで解説されています。
Pandasについて学びたい方や機械学習の精度を上げたい方にはオススメの書籍です。
エンジニアとしての自身の価値をチェックする(完全無料)
エンジニアとして、
自分の価値がどれくらいのものかご存知でしょうか?
エンジニアとしてIT業界に身を置いていると
今の会社でずっと働くのか、フリーランスとして独立するのか …
と様々な選択肢があります。
どの選択肢が正解なのかを見極めるためにも、選択肢を広げるためにも
自身の価値を知っておくことはとても重要です。
TechClips ME では、
職務経歴書をアップロードするだけで企業からのスカウトを受けることができます。
▼▼▼▼▼
▲▲▲▲▲
しかもTechClips MEでは想定年収を企業から提示してくれるので、
自身の価値を数字で分かりやすくたしかめることができます。
登録はもちろん完全無料なので、一度登録してみると良いかもしれません。
コメント