iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
AI & Data

機器學習新手行,相信你也行!系列 第 4

冒險前準備~Python中的資料處理工具 —— Pandas

  • 分享至 

  • xImage
  •  

今天早八,筆者昨天還做死玩遊戲到很晚,可以非常想睡了,但把畢業專題的老師找到了!嗚呼~那今天的內容不出意外是 Pandas 本來昨天要一起說得但晚上有點來不及所以放今天,那我們繼續接下來說吧!


Pandas(Panel Data)

pandas 是 Python 用於資料操縱和分析的軟體庫,主要用於處理和分析資料。了能夠操作數值表格和時間序列資料的工具和運算功能,適用於各種資料處理和分析工作。

Pandas 的特徵和用途

  • 資料框架(DataFrame)和序列(Series):是 Pandas 的兩個主要資料結構,資料框架像是資料表,可以包含不同型別的資料,而序列是一維的資料結構
  • 資料載入和儲存:提供從 CSV 、 Excel 、 SQL 資料庫等不同格式的資料來源來載入資料,也可以將處理完的資料儲存為不同格式的檔案
  • 資料清理和資料前處理:可以處理缺失資料、重複資料、資料轉換、資料合併和篩選等工作
  • 資料視覺化:Pandas 整合了 Matplotlib 可以簡單快速建立資料視覺化圖表
  • 時間序列分析:包括日期和時間的操作,重新取樣能將事件按照不同的時間間隔重新整理和滾動統計來計算平均值或總和

Pandas 使用

這裡放一些 Pandas 的語法

Pandas 匯入

import pandas as pd
data = pd.read_csv('data.csv') # 讀取 CSV 文件

series

# 建立 series
se = pd.Series([1, 2, 3])

# 可以自訂索引
se = pd.Series([1, 2, 3], index = ['榛', '堯', '安'])

# 取陣列內容值
series.values

# 取索引陣列
series.index

# 檢查是否不重複
series.is_unique

dataframe

# 建立有索引 DataFrame
df = pd.DataFrame(data ={'A':[1, 2, 3], 'B':[4, 5, 6], 'C':[7, 8, 9]})
df = pd.DataFrame(data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns = ['A', 'B', 'C'] )

# 新增
df['D'] = [10, 11, 12]

#重新命名
df.columns = ['1', '2', '3', '4'] # A, B, C, D 改成 1, 2, 3, 4

# 取欄位名稱
df.columns

# 取陣列值
df.values

# 取索引
df.index

# 資料維度
df.shape

# 資料轉置
df.T # 索引與欄位翻轉

用法跟上一篇 Numpy 有類似的部分
有些上一篇有寫得比較清楚
可以回去看看

查看資料摘要

# 查看前幾行資料
data.head()

# 查看資料統計摘要
data.describe()

選擇欄位

# 選擇單列
column = data['column_name']

# 選擇多列
columns = data[['column1', 'column2']]

條件選擇

# 使用條件選擇資料列
data[data['column_name'] > 5]

排序資料

# 排序
data.sort_values(by = 'column_name', ascending = False)
# ascending = True 資料從小到大排序
# ascending = False 資料從大到小排序

缺失值處理

# 檢查缺失值
data.isnull().sum()

# 刪除包含缺失值的資料列
data.dropna(inplace = True)

# 填充缺失值
data.fillna(value, inplace = True)

分組和聚合

# 依照欄位分組
data.groupby('column_name')

# 聚合操作(像是計算平均值等等)
grouped_data.mean()

儲存檔案:

data.to_csv('new_data.csv', index = False)  # 存成CSV
data.to_excel('new_data.xlsx', index = False)  # 存成Excel

同樣的建議大家去自己跑跑看這些語法
實作才能更了解語法的作用
如果熟悉一點語法的話
可以完成今天的小實驗了!

Pandas 小實驗室

題目

import pandas as pd

data = pd.DataFrame({
    '姓名': ['小榛', '小安', '小堯', '小霈', '小躍'],
    '數學': [85, 92, 78, 96, 88],
    '英文': [78, 89, 91, 88, 75],
    '歷史': [92, 85, 88, 79, 90]
})
  1. 顯示前3筆資料
  2. 計算每個科目的平均分數
  3. 找出只有數學 > 90 的學生
  4. 找出英文成績不及格的學生
  5. 按總分數對學生從高到低排序,並顯示前2名學生資料
  6. 將排序結果保存為 CSV 檔案

今天早八又滿堂
所以暫時先到這
大家明天再繼續一起學習吧~
明天見!


參考資料

https://zh.wikipedia.org/zh-tw/Pandas
https://blog.techbridge.cc/2020/09/21/python-pandas-zen-tutorial/
https://www.finlab.tw/pandas-%E9%AD%94%E6%B3%95%E7%AD%86%E8%A8%981-%E5%B8%B8%E7%94%A8%E6%8B%9B%E5%BC%8F%E7%B8%BD%E8%A6%BD/#pandas_zi_liao_jie_gou


上一篇
冒險前準備~Python中的資料處理工具 —— NumPy
下一篇
冒險前準備~Python中的資料處理工具 —— Matplotlib
系列文
機器學習新手行,相信你也行!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言