「データを素早く可視化するための7つのパンダのプロット関数」
『美容とファッションに関する豊富な知識を持つ美容&ファッションエキスパートが生き生きとした記事を執筆します』
データの分析には、pandasを使って列のフィルタリングや変換、複数のデータフレームからのデータの結合などのために、pandasの関数を使います。
しかし、数字だけを見るのではなく、データフレームのデータを視覚化するために、プロットを生成することもよく役立ちます。
pandasには、簡単で素早いデータの視覚化に使えるいくつかのプロット関数があります。このチュートリアルでは、それらについて説明します。
🔗 Google Colabノートブックへのリンク(コードを実際に書きながら進めたい場合)。
Pandasのデータフレームの作成
まず、分析用のサンプルデータフレームを作成しましょう。従業員のレコードを含むdf_employees
という名前のデータフレームを作成します。
FakerとNumPyのrandomモジュールを使用して、200件のレコードをデータフレームに追加します。
注意: 開発環境にFakerがインストールされていない場合は、pipを使用してインストールすることができます: pip install Faker
。
以下のスニペットを実行して、レコードでdf_employees
を作成し、データを追加してください:
import pandas as pdfrom faker import Fakerimport numpy as np# Fakerオブジェクトのインスタンス化fake = Faker()Faker.seed(27)# 従業員のためのDataFrameを作成num_employees = 200departments = ['Engineering', 'Finance', 'HR', 'Marketing', 'Sales', 'IT']years_with_company = np.random.randint(1, 10, size=num_employees)salary = 40000 + 2000 * years_with_company * np.random.randn()employee_data = { 'EmployeeID': np.arange(1, num_employees + 1), 'FirstName': [fake.first_name() for _ in range(num_employees)], 'LastName': [fake.last_name() for _ in range(num_employees)], 'Age': np.random.randint(22, 60, size=num_employees), 'Department': [fake.random_element(departments) for _ in range(num_employees)], 'Salary': np.round(salary), 'YearsWithCompany': years_with_company}df_employees = pd.DataFrame(employee_data)# DataFrameのヘッドを表示df_employees.head(10)
再現性のためにシードを設定しました。したがって、このコードを実行するたびに同じレコードが表示されます。
以下はデータフレームの最初のレコードのビューです:
1. 散布図
散布図は、データセット内の任意の2つの変数の関係を理解するために一般的に使用されます。
df_employees
データフレームについて、従業員の年齢と給与の関係を可視化する散布図を作成してみましょう。これにより、従業員の年齢と給与の間に相関があるかどうかを理解することができます。
散布図を作成するには、次のようにplot.scatter()
を使用します:
# 散布図: 年齢 vs 給与df_employees.plot.scatter(x='Age', y='Salary', title='散布図: 年齢 vs 給与', xlabel='年齢', ylabel='給与', grid=True)
この例のデータフレームでは、従業員の年齢と給与の間には相関が見られません。
2. 折れ線グラフ
折れ線グラフは、通常、時間や類似のスケールで変化する連続変数の傾向やパターンを特定するために適しています。
df_employees
データフレームを作成する際に、社員が会社で働いてきた年数と給与の間に線形の関係を定義しています。そのため、平均給与が年数とともにどのように変化するかを示す折れ線グラフを見てみましょう。
年数別の平均給与を集計し、plot.line()
を使用して折れ線グラフを作成します。
# 折れ線グラフ:経験年数に対する平均給与の傾向
average_salary_by_experience = df_employees.groupby('YearsWithCompany')['Salary'].mean()
df_employees['AverageSalaryByExperience'] = df_employees['YearsWithCompany'].map(average_salary_by_experience)
df_employees.plot.line(x='YearsWithCompany', y='AverageSalaryByExperience', marker='o', linestyle='-', title='経験年数に対する平均給与の傾向', xlabel='在職年数', ylabel='平均給与', legend=False, grid=True)
従業員の給与フィールドを従業員が会社で働いた年数との線形関係で埋めることを選択したため、折れ線グラフはそれを反映しています。
3. ヒストグラム
ヒストグラムを使用して連続変数の分布を視覚化できます。値を区間またはビンに分割し、各ビン内のデータポイントの数を表示します。
以下に示すように、従業員の年齢の分布をヒストグラムを使用して理解しましょう。 plot.hist()
を使用します。
# ヒストグラム:年齢の分布
df_employees['Age'].plot.hist(title='年齢の分布', bins=15)
4. 箱ひげ図
箱ひげ図は、変数の分布、そのばらつき、および外れ値の特定に役立ちます。
給与の分布をさまざまな部署間で比較するために、箱ひげ図を作成し、組織内での給与分布の大まかな比較を行います。
箱ひげ図は、部署によってグループ化された「Salary」列のboxplot
を使用します。
# 箱ひげ図:部署別の給与分布
df_employees.boxplot(column='Salary', by='Department', grid=True, vert=False)
箱ひげ図からわかるように、一部の部署の給与のばらつきが他の部署よりも大きいことがわかります。
5. 棒グラフ
変数の分布を出現頻度の観点から理解したい場合、棒グラフを使用できます。
次に、従業員数を視覚化するためにplot.bar()
を使用して棒グラフを作成しましょう。
# 棒グラフ:部署別従業員数
df_employees['Department'].value_counts().plot.bar(title='部署別従業員数')
6. 面グラフ
面グラフは、連続またはカテゴリ軸上の変数の累積分布を視覚化するために一般的に使用されます。
従業員のデータフレームでは、異なる年齢グループごとに累積給与分布をプロットすることができます。 年齢グループに基づいて従業員をビンにマッピングするためにpd.cut()
を使用します。
次に、給与を「AgeGroup」でグループ化して累積計算し、plot.area()
を使用して面グラフを作成します。
# 面グラフ:年齢グループ別の累積給与分布
df_employees['AgeGroup'] = pd.cut(df_employees['Age'], bins=[20, 30, 40, 50, 60], labels=['20-29', '30-39', '40-49', '50-59'])
cumulative_salary_by_age_group = df_employees.groupby('AgeGroup')['Salary'].cumsum()
df_employees['CumulativeSalaryByAgeGroup'] = cumulative_salary_by_age_group
df_employees.plot.area(x='AgeGroup', y='CumulativeSalaryByAgeGroup', title='年齢グループ別の累積給与分布', xlabel='年齢グループ', ylabel='累積給与', legend=False, grid=True)
7. 円グラフ
円グラフは、全体の中で各カテゴリの割合を視覚化したい場合に役立ちます。
この例では、組織内の部門ごとの給与分布を表示する円グラフを作成することが合理的です。
部門ごとに従業員の給与の合計を見つけ、 plot.pie()
を使用して円グラフをプロットします。
#円グラフ:部門別給与分布df_employees.groupby('Department')['Salary'] .sum()。plot.pie(title ='部門別給与分布'、autopct ='%1.1f%')
< p>
まとめ
pandasで使用できるいくつかの便利なプロット関数を見つけていただければ幸いです。
はい、matplotlibとseabornでより美しいプロットを生成することができます。しかし、クイックデータ可視化には、これらの関数は非常に便利です。
あなたがよく使う他のpandasプロット関数にはどのようなものがありますか? コメントで教えてください。
[Bala Priya C](https://twitter.com/balawc27) は、インドの開発者兼技術ライターです。彼女は数学、プログラミング、データサイエンス、コンテンツ作成の交差点での作業が好きです。彼女の興味と専門分野にはDevOps、データサイエンス、自然言語処理が含まれています。彼女は読書、執筆、コーディング、コーヒーを楽しんでいます!現在、彼女はチュートリアル、ステップバイステップガイド、意見記事などの執筆によって、開発者コミュニティとの知識の共有と学習に取り組んでいます。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles