最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python數(shù)據(jù)可視化之從單變量到多變量的方法

 更新時間:2026年01月08日 08:36:58   作者:紙上筆下  
Python憑借其強大的可視化庫(如Matplotlib、Seaborn)成為進行EDA的首選工具,本文基于一份實用的Python數(shù)據(jù)可視化速查表,系統(tǒng)介紹從單變量到多變量、從時間序列到文本數(shù)據(jù)的可視化方法,需要的朋友可以參考下

Python憑借其強大的可視化庫(如Matplotlib、Seaborn)成為進行EDA的首選工具。本文基于一份實用的“Python數(shù)據(jù)可視化速查表”,系統(tǒng)介紹從單變量到多變量、從時間序列到文本數(shù)據(jù)的可視化方法,并提供代碼示例與擴展解讀,助你高效完成數(shù)據(jù)探索。

1. 單變量分析:了解單個變量分布

單變量分析旨在理解數(shù)據(jù)集中單個變量的分布特征,適用于數(shù)值型和分類型數(shù)據(jù)。

常用圖表與代碼示例

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 示例數(shù)據(jù)框
df = pd.DataFrame({'col': [1, 2, 2, 3, 3, 3, 4, 4, 5]})

# 1. 直方圖:查看數(shù)值分布
df.hist()
plt.title("數(shù)值分布直方圖")
plt.show()

# 2. 箱線圖:查看分布與離群點(原文borglot應(yīng)為boxplot)
sns.boxplot(data=df, y='col')  # 展示數(shù)值列col的分布
plt.title("箱線圖展示分布與異常值")
plt.show()

# 3. 核密度估計圖:平滑的概率密度曲線
sns.kdeplot(data=df['col'])
plt.title("核密度估計圖")
plt.show()

# 4. 條形圖:適用于分類數(shù)據(jù)頻次統(tǒng)計
df['col'].value_counts().plot(kind='bar')
plt.title("分類頻次條形圖")
plt.xlabel("類別")
plt.ylabel("頻次")
plt.show()

適用場景

  • 直方圖:了解數(shù)值分布是否正態(tài)、偏斜
  • 箱線圖:快速發(fā)現(xiàn)異常值
  • 核密度圖:平滑展示分布趨勢
  • 條形圖:展示類別頻次

2. 雙變量分析:探索兩個變量間關(guān)系

雙變量分析用于探索兩個變量之間的關(guān)聯(lián),包括數(shù)值-數(shù)值、數(shù)值-類別等組合。

# 示例數(shù)據(jù)
df = pd.DataFrame({
    'x': [1, 2, 3, 4, 5],
    'y': [2, 4, 6, 8, 10],
    'category': ['A', 'B', 'A', 'B', 'A']
})

# 1. 散點圖:兩個數(shù)值變量關(guān)系
sns.scatterplot(data=df, x='x', y='y')
plt.title("散點圖:x與y的關(guān)系")
plt.show()

# 2. 帶回歸線的散點圖
sns.regplot(data=df, x='x', y='y')
plt.title("帶線性回歸的散點圖")
plt.show()

# 3. 條形圖:類別與數(shù)值的對比
sns.barplot(x='category', y='y', data=df)
plt.title("不同類別的y值對比")
plt.show()

# 4. 小提琴圖:類別下的分布與密度
sns.violinplot(data=df, x='category', y='y')
plt.title("小提琴圖:類別y的分布")
plt.show()

# 5. 箱線圖(原文borglet應(yīng)為boxplot):比較類別間分布
sns.boxplot(x='category', y='y', data=df)
plt.title("箱線圖:類別間分布比較")
plt.show()

3. 多變量分析:三維及以上關(guān)系探索

當(dāng)我們需要同時考察三個或更多變量時,多變量可視化工具顯得尤為重要。

# 示例數(shù)據(jù)
df = pd.DataFrame({
    'x': [1, 2, 3, 4, 5],
    'y': [2, 4, 6, 8, 10],
    'z': [5, 4, 3, 2, 1],
    'type': ['T1', 'T2', 'T1', 'T2', 'T1']
})

# 1. 散點圖矩陣:所有數(shù)值變量兩兩關(guān)系
sns.pairplot(df)
plt.suptitle("散點圖矩陣", y=1.02)
plt.show()

# 2. 相關(guān)熱圖:變量間相關(guān)性強度
sns.heatmap(df.corr(), annot=True, cmap='coolwarm')
plt.title("變量相關(guān)性熱圖")
plt.show()

# 3. 聯(lián)合分布圖:散點圖+邊緣分布
sns.jointplot(data=df, x='x', y='y')
plt.show()

# 4. 三變量散點圖(顏色表示第三維)
plt.scatter(df['x'], df['y'], c=df['z'], cmap='viridis')
plt.colorbar(label='z值')
plt.title("三變量散點圖(顏色表示z)")
plt.show()

# 5. 分類著色散點圖
sns.scatterplot(data=df, x='x', y='y', hue='type')
plt.title("按類別著色的散點圖")
plt.show()

4. 時間序列分析:趨勢、周期與異常

時間序列數(shù)據(jù)常見于金融、氣象、日志等領(lǐng)域,可視化有助于識別趨勢、季節(jié)性和異常。

# 示例時間序列數(shù)據(jù)
df = pd.DataFrame({
    'date': pd.date_range('2023-01-01', periods=100, freq='D'),
    'value': np.random.randn(100).cumsum() + 50
})

# 1. 簡單時間序列圖
df.plot(x='date', y='value')
plt.title("時間序列趨勢圖")
plt.xlabel("日期")
plt.ylabel("數(shù)值")
plt.show()

# 2. 移動平均圖(窗口為7天)
df.set_index('date')['value'].rolling(window=7).mean().plot()
plt.title("7天移動平均圖")
plt.show()

# 3. 時間序列分解(需statsmodels庫)
from statsmodels.tsa.seasonal import seasonal_decompose
result = seasonal_decompose(df.set_index('date')['value'], model='additive', period=30)
result.plot()
plt.suptitle("時間序列分解(趨勢+季節(jié)+殘差)", y=1.02)
plt.show()

# 4. 帶置信區(qū)間的折線圖
sns.lineplot(data=df, x='date', y='value')
plt.title("帶置信區(qū)間的時間序列圖")
plt.show()

5. 文本數(shù)據(jù)分析:詞頻、主題與情感

文本數(shù)據(jù)可視化常用于自然語言處理(NLP),幫助理解詞頻分布、主題結(jié)構(gòu)等。

from wordcloud import WordCloud
import nltk
from nltk.probability import FreqDist

# 示例文本
text = "data science machine learning python visualization analysis exploration"

# 1. 詞云圖
wordcloud = WordCloud(width=800, height=400).generate(text)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title("詞云圖")
plt.show()

# 2. 詞頻分布圖
words = text.split()
fdist = FreqDist(words)
fdist.plot(30, cumulative=False)  # 顯示前30個詞
plt.title("詞頻分布圖")
plt.show()

# 3. 詞頻條形圖
sns.barplot(x=list(fdist.keys())[:10], y=list(fdist.values())[:10])
plt.title("前10高頻詞條形圖")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

6. 圖表自定義:美化與標(biāo)注

好的可視化不僅需要正確表達信息,還需要良好的可讀性與美觀性。

# 示例圖表自定義
plt.figure(figsize=(10, 6))  # 設(shè)置圖像尺寸
sns.scatterplot(data=df, x='x', y='y')
plt.title("這是一個帶自定義樣式的散點圖", fontsize=16)
plt.xlabel("X軸標(biāo)簽", fontsize=12)
plt.ylabel("Y軸標(biāo)簽", fontsize=12)
plt.xticks(rotation=45)  # X軸標(biāo)簽旋轉(zhuǎn)45度
plt.grid(True, linestyle='--', alpha=0.5)
plt.tight_layout()  # 自動調(diào)整子圖間距
plt.show()

7. 圖表保存與展示

# 保存圖表到文件
plt.savefig("scatter_plot.png", dpi=300, bbox_inches='tight')
print("圖表已保存為 scatter_plot.png")

# 展示圖表
plt.show()

# 關(guān)閉當(dāng)前圖像釋放內(nèi)存
plt.close()

探索性數(shù)據(jù)分析流程示意圖

以下Mermaid流程圖展示了典型的EDA可視化流程:

通過本指南,你可以系統(tǒng)掌握Python在探索性數(shù)據(jù)分析中的可視化工具與技巧。無論是單變量分布探查,還是多變量關(guān)系挖掘,或是時間序列與文本數(shù)據(jù)的可視化,合理運用這些圖表工具將極大提升你的數(shù)據(jù)分析效率與洞察力。建議結(jié)合實際項目多加練習(xí),形成自己的可視化工作流。

以上就是Python數(shù)據(jù)可視化之從單變量到多變量的方法的詳細內(nèi)容,更多關(guān)于Python單變量到多變量可視化的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

利辛县| 华安县| 绵竹市| 吉隆县| 津市市| 紫阳县| 彭水| 且末县| 柏乡县| 兖州市| 密山市| 恩施市| 额济纳旗| 兴隆县| 马边| 石嘴山市| 樟树市| 马山县| 彰化县| 阳江市| 方正县| 图们市| 寿光市| 天等县| 呈贡县| 建德市| 宁海县| 屏东市| 突泉县| 丰台区| 佛坪县| 会泽县| 屏东市| 莎车县| 璧山县| 海城市| 玛纳斯县| 天长市| 长泰县| 米易县| 平罗县|