Pandas 基礎 (2) - Dataframe 基礎

Rachel發表於2019-03-07

上一節我們已經對 Dataframe 的概念做了一個簡單的介紹, 這一節將具體看下它的一些基本用法:

首先, 準備一個 excel 檔案, 大致內容如下, 並儲存成 .csv 格式.
file

然後, 在 jupyter notebook 裡執行如下程式碼:

#引入 pandas 模型
import pandas as pd
# 讀取 csv 檔案
df = pd.read_csv('weather_data.csv')
# 列印
df

在 jupyter notebook 裡的表現形式大概如下:
file
就這麼簡單, 我們就把一個 csv 檔案轉換成 dataframe 格式了. 這裡大家在操作中可能遇到的一個報錯就是找不到檔案. 這是路徑問題, 解決方法很簡單, 開啟你執行 jupyter 的終端視窗, 找到如下路徑, 把你的 csv 檔案丟進去就可以啦.
file

OK, 上面介紹瞭如何將外部檔案轉換成 dataframe. 下面介紹從 python dictionary 轉換成 dataframe:

# python dictionary
weather_data = {
    'day': ['1/1/2017', '1/2/2017', '1/3/2017', '1/4/2017', '1/5/2017', '1/6/2017'], 
    'temperature': [32, 35, 27, 25, 24, 30],
    'windspeed': [6, 7, 2, 5, 4, 6],
    'event': ['Rain', 'Sunny', 'Snow', 'Snow', 'Rain', 'Sunny']
}
# 轉換
df = pd.DataFrame(weather_data)
列印
df

執行結果:
file

可以說, 兩種方式都非常的簡便, 下面就基於上面的資料看一下 dataframe 有哪些屬性可以供我們使用.

df.shape

輸出:
(6, 4)
這裡是檢視這個 dataframe 的行數和列數, 顯然, 我們這個例子中, 有 6 行, 4 列. 那麼我們還可以把這個結果同時賦值給兩個變數, 再分別檢視這兩個變數的值:

rows, columns = df.shape
rows

輸出:
6

columns

輸出:
4

# 檢視前5行資料
df.head()
# 檢視後5行資料
df.tail()
# 檢視後 3 行資料
df.tail(3)
# 檢視 第 2,3,4 行的資料
df[2:5]
# 檢視所有資料
df[:]
# 檢視所有列
df.columns
# 檢視某一列方法一, 只適用於列名中間沒有空格的
df.day
# 檢視某一列方法二, 適用於所有列名
df['event']
# 檢視某一列的型別, 這裡輸出的結果是 pandas.core.series.Series, 表示每一列都是一個 series
type(df['event'])
# 檢視兩個列以上的資料, 注意這裡要用兩個中括號
df[['event', 'day']]

以上就是 dataframe 的一些基本屬性. 下面介紹一些操作命令

# 求某一列裡的最大值
df['temperature'].max()
# 求某一列的平均值
df.temperature.mean()
# 檢視 temperature 大於 30 的資料
df[df.temperature>30]
# 檢視 temperature 等於最大值的資料
df[df.temperature==df.temperature.max()]
# 只檢視 temperature 等於最大值的日期, 有下面兩種寫法
df['day'][df.temperature==df.temperature.max()]
df.day[df.temperature==df.temperature.max()]
# 檢視 temperature 等於最大值的日期和溫度
df[['day', 'temperature']][df.temperature==df.temperature.max()]
# 檢視目前的索引
df.index
# 設定索引, 這裡注意必須加上第二個引數, 以確保真正更改到 df 的索引
df.set_index('day', inplace=True)
# 基於上面把 'day' 設為索引, 就可以具體檢視某一行的資料
df.loc['1/4/2017']
# 重置索引
df.reset_index(inplace=True)
# 把索引設定為 'event', 這裡要說明兩個問題, 第一, 更新索引必須在重置索引的前提下, 否則 'day'列就消失了, 第二, 任何列都可以被設定為索引
df.set_index('event', inplace=True)

最後再介紹一個命令, 這裡就是會輸出所有數字內容的列, 並且羅列出一些基本常用的運算結果.
file

OK, 以上就是對 dataframe 的基本用法的介紹.
大家如果有任何問題或者意見或者不同看法, 歡迎留言呦. 期待跟大家一起學習討論.
See you!!!

本作品採用《CC 協議》,轉載必須註明作者和本文連結