【解決方法】Seaborn プロットの問題

プログラミングQA


こんにちは、みんな、

私は Seaborn プロットに少し慣れていないので、次のコードを使用すると、数値が少し奇妙に見え、実際の数値ではないと思います。 私に足りないところを教えていただけますか?

私が試したこと:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import plotly as px

Titanic=sns.load_dataset("titanic")
sns.countplot(x='age', data=Titanic) # x-ticks are overlapping

sns.violinplot(data=Titanic, x="age", y="fare", hue="class") # same problem
sns.pairplot(Titanic) # give and error
sns.boxenplot(data=Titanic,x="age", y="fare", hue="class") # graph is too bad as well as same error as previous.
sns.violinplot(data=Titanic, x="age", y="fare", hue="class") # graph is too bad as well as same error as previous.
sns.countplot(x='age', data=Titanic) # x-ticks are overlapping

解決策 1

Seaborn のプロットについて助けが必要です。 一つずつ説明していきましょう。

1. `sns.countplot` 内の重複する x ティック: これは通常、「年齢」列に含まれる一意の値が多すぎる場合に発生します。 プロットを読みやすくするには、図のサイズを大きくするか、x 目盛のラベルを回転します。

2. `sns.violinplot`、`sns.boxenplot`、および `sns.pairplot` の問題: これらの問題は、「年齢」列と「運賃」列のデータの性質が原因で発生している可能性があります。 「年齢」列に NaN 値が含まれているか、「運賃」の範囲が広すぎるため、プロットが歪む可能性があります。

3. `sns.pairplot` のエラー: このエラーは、データセット内の非数値または NaN 値が原因である可能性があります。 `sns.pairplot` は数値列でのみ機能し、NaN 値を適切に処理できません。

これらの問題を解決するためのコードの調整とヒントをいくつか示します。

カウントプロットの調整

Python
plt.figure(figsize=(10, 6)) # Adjusting figure size
sns.countplot(x='age', data=Titanic)
plt.xticks(rotation=90)  # Rotating x-ticks
plt.show()

Violin および Boxen プロットの処理

`sns.violinplot` と `sns.boxenplot` については、’age’ 列と ‘fare’ 列に、プロットを歪める可能性のある NaN 値や外れ値が含まれていないことを確認してください。 NaN 値を削除するか、中心傾向測定値 (平均値、中央値) を入力することで、NaN 値を処理できます。

Python
# Handling NaN values
Titanic = Titanic.dropna(subset=['age', 'fare'])

# Now try plotting
sns.violinplot(data=Titanic, x="age", y="fare", hue="class")
plt.show()

sns.boxenplot(data=Titanic, x="age", y="fare", hue="class")
plt.show()

ペアプロットの修正

`sns.pairplot` を修正するには、すべての列が数値であり、NaN 値を処理できるようにします。

Python
# Dropping non-numeric columns for pairplot
numeric_cols = Titanic.select_dtypes(include=[np.number]).columns.tolist()
Titanic_numeric = Titanic[numeric_cols].dropna()

sns.pairplot(Titanic_numeric)
plt.show()

これらの調整を試して、プロットの問題が解決されるかどうか確認していただけますか? それでも問題が発生する場合は、特定のエラー メッセージから、問題の原因についてさらに詳しい情報が得られる可能性があります。

コメント

タイトルとURLをコピーしました