可視化是數據科學中必不可少的部分。Python 流行的數據分析庫Pandas提供了 .plot() 方法進行數據可視化。即使新手階段也能很快就會創建基本圖,從而對數據産生有價值的見解。
整套學習自學教程中應用的數據都是《三國志》、《真·三國無雙》系列遊戲中的内容。
數據準備
import pandas as pd
df = pd.read_excel("Romance of the Three Kingdoms 13/人物詳情數據.xlsx")
df.head()
創建 Pandas 繪圖
.plot() 返回一個折線圖,其中包含 DataFrame 中每一行的數據。 x 軸值代表可視化的數據列。
import Matplotlib.pyplot as plt
df.head(10).plot(x="名前", y=["生年","沒年","壽命"])
plt.show()
.plot() 有幾個可選參數。kind參數接受 11 個不同的字符串值并确定将創建哪種繪圖:
當調用一個 DataFrame 的 .plot()對象時,Matplotlib 會在後台創建繪圖。
import matplotlib.pyplot as plt
plt.scatter(df.head(10)["生年"], df.head(10)["壽命"])
<matplotlib.collections.PathCollection at 0x2caac179438>
繪制生年和壽命的關系散點圖。
數據的描述和檢查分布和直方圖
DataFrame 不是 pandas 中唯一具有 .plot() 方法的類,Series 對象提供了類似的功能。可以将 DataFrame 的每一列作為 Series 對象。
繪制一個武将性格的直方圖。
type(df["壽命"])
pandas.core.series.Series
df["壽命"].plot(kind="hist")
<matplotlib.axes._subplots.AxesSubplot at 0x2caac398240>
直方圖顯示數據分為 5 個區間,從 0 美元到 100 歲不等,每個區間的寬度為 20 歲。直方圖的形狀與正态分布不同,正态分布呈對稱的鐘形,中間有一個峰值。
異常值檢測異常值,指的是樣本中的一些數值明顯偏離其餘數值的樣本點,所以也稱為離群點。異常值分析就是要将這些離群點找出來,然後進行分析。
可以使用直方圖可以檢測這樣的異常值。
檢測年齡異常的人。
top_5 = df.sort_values(by="Median", ascending=False).head(10)
看到遊戲設定中一些年齡異常的人,也可以使用箱線圖直接查看。
df["壽命"].head(10).plot(kind="box")
檢查相關性
通常想查看數據集的兩列是否關聯。
用『生年』和 『壽命』創建散點圖。
df.plot(x="生年", y="壽命", kind="scatter")
貌似看不出來啥規律。
雖然散點圖是獲得有關可能相關性的第一印象的極好工具,但它肯定不是聯系的明确證據。要了解不同列之間的相關性,可以使用.corr(). 如果懷疑兩個值之間存在相關性,那麼您可以使用多種工具來驗證您的預感并衡量相關性有多強。
但請記住,即使兩個值之間存在相關性,也不意味着其中一個值的變化會導緻另一個值的變化。換句話說,相關并不意味着因果關系。
分析分類數據為了處理更大的信息塊,人類的大腦有意識地和無意識地對數據進行分類。這種技術通常很有用,但遠非完美無缺。有時我們将事物歸入一個類别,經過進一步檢查并不是那麼相似。因此需要了解一些用于檢查類别和驗證給定分類是否有意義的工具。
分組類别的基本用法是分組和聚合,可以使用 .groupby() 。
cat_totals = df.groupby("性格")["性格"].count().sort_values()
cat_totals
性格
? 1
豬突 165
小心 178
豪膽 223
冷靜 290
Name: 性格, dtype: int64
繪制一個水平條形圖,顯示 cat_totals 中的所有類别總數。
cat_totals.plot(kind="barh", fontsize=4)
<AxesSubplot:ylabel='Major_category'>
比率
想查看類别之間的差異,垂直和水平條形圖通常是一個不錯的選擇。如果對比率感興趣,那麼餅圖是一個很好的工具。
『分類』 的類别然後創建一個餅圖。
df.groupby("分類")["分類"].count()
分類
文官 336
武官 520
? 1
Name: 分類, dtype: int64
df.groupby("分類")["分類"].count().plot(kind="pie", label="")
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!