添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

學習了解 Python Pandas 的觀念與運用

What is Pandas?

Pandas 是基於 Numpy 開發的模組,該模組是為了解決結構化資料分析而創建的,Pandas納入了大量函數和一些標準的資料模型,用於資料挖掘和資料分析,同時也提供數資料清洗功能

安裝與導入 Pandas

在使用之前需安裝與導入 Pandas,可使用 Anaconda 安裝:

也可使用 pip 安裝:

pip install pandas

導入 Pandas 模組:

import pandas as pd

Pandas 觀念介紹 & 實際體驗

Pandas 資料結構

資料來源可以是串列(List)、元組(Tuple)、字典(Dictionary)、Numpy資料陣列
名稱|說明|語法
Series|有索引值的一維資料陣列|pd.Series(資料來源[, index = 自訂索引])
DataFrame|有索引值與欄標籤的二維資料集|pd.DataFrame(資料來源[, index = 自訂索引, columns = 欄位])

Series 實際體驗

情境一:若是非使用字典的方式,同時未給予自訂索引,則 Pandas 會自動給予每個值索引
情境二:若是有給予自訂索引,則 Pandas 將會依照給予的索引數值去設定每個值的索引值

import pandas as pd
# 情境一
listValue = ['Apple', "Banana", "Cherry"]
se = pd.Series(listValue)
print(se) # 印出所有內容
print(se.values) # 印出數值
print(se.index) # 印出索引
print("-" * 20)
# 情境二
listValue2 = ['Apple', "Banana", "Cherry"]
se2 = pd.Series(listValue2, ["v1", "v2", "v3"])
print(se2) # 印出所有內容
print(se2.index) # 印出索引

情境三:使用字典當資料來源,去建立 Series,字典的 Key 會是 Series 的索引,而字典的 Value 會是 Series 的資料

import pandas as pd
# 情境三
dictValue = {
    "Chinese": 'bad',
    "Engilsh": 'mediocre',
    "Math": 'excellent'
se = pd.Series(dictValue)
print(se) # 印出所有內容
print("-" * 20)
print(se.values) # 印出數值
print("-" * 20)
print(se.index) # 印出索引
print("-" * 20)
print(se[2]) # 印出指定索引位置的數值
print("-" * 20)
print(se["Engilsh"]) # 印出指定索引位置的數值
print("-" * 20)
print(se[[0, 2]]) # 印出指定索引位置的數值

DataFrame 實際體驗

index 索引是第一列的值,column 是第一欄的欄位名稱(若未給予將會預設給予由 0 開始的整數串列)
情境一:未給予 index 值與 column值
情境二:給予 index 值,未給予 column值
情境三:給予 index 值與 column值

import pandas as pd
listValue = [
    ["Apple", "Banana", "Cherry"],
    ["Grape", "Lemon", "Orange"],
    ["Kiwi", "Pineapple", "Watermelon"]
# 情境一:未給予 index 值與 column值
df = pd.DataFrame(listValue)
print(df)
print("-" * 40)
# 情境二:給予 index 值,未給予 column值
df2 = pd.DataFrame(listValue, index=[1, 2, 3])
print(df2)
print("-" * 40)
# 情境三:給予 index 值與 column值
df3 = pd.DataFrame(listValue, index=[1, 2, 3], columns=["v1", "v2", "v3"])
print(df3)

情境四:給予字典並轉換數值為 DataFrame,印出 DataFrame 內容
字典的 Key 會是 column,而字典的 Value 裡 Key 是 index 索引

import pandas as pd
# 情境四
dictValue = {
    "Chinese": {"A1":68, "A2":86, "A3":57},
    "Engilsh": {"A1":63, "A2":92, "A3":83},
    "Math": {"A1":65, "A2":89, "A3":77}
df = pd.DataFrame(dictValue)
print(df)

取得 DataFrame 的相關數值

dictValue = { "Chinese": {"A1":68, "A2":86, "A3":57}, "Engilsh": {"A1":63, "A2":92, "A3":83}, "Math": {"A1":65, "A2":89, "A3":77} df = pd.DataFrame(dictValue) print(df) # 印出所有數值 print("-" * 40) print("取出 Chinese 的相關數值:\n", df["Chinese"]) # 印出 Chinese 的相關數值 print("-" * 40) print("取出 Chinese Math 的相關數值:\n", df[["Chinese", "Math"]])# 印出 Chinese Math 的相關數值 print("-" * 40) print("取出以 Chinese 為基準,取其中及格(>=60)的所有相關數值:\n", df[df["Chinese"] >= 60]) # 印出以 Chinese 為基準,取其中及格(>=60)的所有相關數值 print("-" * 40) print("僅取出 Chinese 的數值:\n", df["Chinese"].values) # 印出僅取出 Chinese 的數值部分 print("-" * 40) print("僅取出 A1 的 Engilsh 的數值:\n", df.values[0][1]) # 印出僅取出 A1 的 Engilsh 的數值 print("-" * 40) print("取出欄位名稱:", df.columns) # 印出欄位名稱 print("-" * 40) print("取出 index:", df.index) # 印出 index print("-" * 40) print("印出描述性統計值:\n", df.describe()) # 印出描述性統計值

執行後結果為:
dictValue = { "Chinese": {"A1":68, "A2":86, "A3":57}, "Engilsh": {"A1":63, "A2":92, "A3":83}, "Math": {"A1":65, "A2":89, "A3":77} df = pd.DataFrame(dictValue) print(df) # 印出所有數值 print("-" * 40) print("使用 loc 取出 A2 的 Math 數值:", df.loc["A2", "Math"]) # 印出 A2 的 Math print("-" * 40) print("使用 iloc 取出 A2 的 Math 數值:", df.iloc[1, 2]) # 印出 A2 的 Math

以上為 Python Pandas 資料結構的簡易說明,將在下篇正式進入到 Pandas 存取檔案資料與運用視覺化呈現數據