聲明:此文隻是對《對比excel,輕松學習python資料分析》這本書的讀書筆記,文章中的代碼均來源于書中,僅以知識分享為用途,後續我會繼續支援作者,也會繼續讀完這本書,如有侵權,請留言我删除
pandas資料結構
Series資料結構
- 需要導入的庫
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
- 什麼是
資料結構Series
0 a
1 b
2 c
3 d
dtype: object
Series是一種類似于一維數組的對象,由一組資料及一組資料與之相關的資料标簽組成,像上面的這種資料結構就是Series,第一列數字是資料标簽,第二列是具體的資料,資料标簽與資料一一對應
- 建立一個
Series
# 利用pandas的Series()方法建立
S1 = pd.Series(['a', 'b', 'c', 'd'])
print(S1)
0 a
1 b
2 c
3 d
dtype: object
如果隻是傳入一個清單不指定資料标簽,那麼Series會預設使用從0開始的數做資料标簽,上面的0.1.2.3就是預設的資料标簽
- 指定索引
直接傳入一個清單會使用預設索引,也可以通過設定index參數來自定義索引
S1 = pd.Series([1, 2, 3, 4]) # 建立序列
S1.index = ['a', 'b', 'c', 'd'] # 通過index方法指定索引
print(S1)
a 1
b 2
c 3
d 4
dtype: int64
- 傳入一個字典
也可以将資料與資料标簽以key,value的形式傳入,這樣字典裡的key就是資料标簽,value就是資料值
dic = {'a1': 1, 'b2': 2, 'c3': 3, 'd4': 4}
s1 = pd.Series(dic)
print(s1)
a1 1
b2 2
c3 3
d4 4
dtype: int64
- 利用index方法擷取Series的索引
擷取一組資料的索引:利用index方法就可以擷取Series的索引值
S1 = pd.Series(['a', 'b', 'c', 'd'])
print(S1.index)
RangeIndex(start=0, stop=4, step=1) # 連續數字提示起止位置及步長
dic = {'a1': 1, 'b2': 2, 'c3': 3, 'd4': 4}
s1 = pd.Series(dic)
print(s1.index)
Index(['a1', 'b2', 'c3', 'd4'], dtype='object') # 自定義索引顯示索引值
- 利用values方法擷取Series的值
與索引值對應的就是擷取Series的值,使用values方法
S1 = pd.Series(['a', 'b', 'c', 'd'])
print(S1.index)
[1 2 3 4]
dic = {'a1': 1, 'b2': 2, 'c3': 3, 'd4': 4}
s1 = pd.Series(dic)
print(s1.index)
['a' 'b' 'c' 'd']
DataFrame 表格型資料結構
DateFrame是什麼
Series是由一組資料與一組索引組成的資料結構,而DateFrame是由一組資料與一對索引組成的表格型資料結構
建立一個DateFrame
- 傳入一個清單
df1 = pd.DataFrame(['a', 'b', 'c', 'd'])
print(df1)
0
0 a
1 b
2 c
3 d
這裡隻傳入了一個單一的清單,該清單的值就會顯示成一列,且行和列都是從0開始的預設索引
- 傳入一個嵌套清單
df2 = pd.DataFrame([['a', 'A'], ['b', 'B'], ['c', 'C'], ['d', 'D']])
print(df2)
0 1
0 a A
1 b B
2 c C
3 d D
當傳入一個嵌套清單時,會根據嵌套清單數顯示成多列資料,行,列索引同樣是從0開始的,清單裡嵌套的清單也可以換成元組
df2 = pd.DataFrame([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')])
print(df2)
0 1
0 a A
1 b B
2 c C
3 d D
- 指定行,列索引
DateFrame()方法的行,列索引都是預設的,通過設定columns參數自定義列索引
# 設定列索引
df31 = pd.DataFrame([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')], columns=['小寫', '大寫'])
print(df31)
小寫 大寫
0 a A
1 b B
2 c C
3 d D
# 設定行索引
df32 = pd.DataFrame([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')], index=['一', '二', '三', '四'])
print(df32)
0 1
一 a A
二 b B
三 c C
四 d D
- 傳入一個字典
date = {'小寫': ['a', 'b', 'c', 'd'], '大寫': ['A', 'B', 'C', 'D']}
df41 = pd.DataFrame(date)
print(df41)
小寫 大寫
0 a A
1 b B
2 c C
3 d D
直接以字典的形式傳入DateFrame時,字典的key值就相當于列索引,如果沒有設定行索引,行索引預設還是從0開始,同時我們也可以設定行索引
date = {'小寫': ['a', 'b', 'c', 'd'], '大寫': ['A', 'B', 'C', 'D']}
df42 = pd.DataFrame(date, index=['一', '二', '三', '四'])
print(df42)
小寫 大寫
一 a A
二 b B
三 c C
四 d D
擷取DateFrame的行,列索引
# 前例代碼
df2 = pd.DataFrame([['a', 'A'], ['b', 'B'], ['c', 'C'], ['d', 'D']])
df3 = pd.DataFrame([('a', 'A'), ('b', 'B'), ('c', 'C'), ('d', 'D')], index=['一', '二', '三', '四'],
columns=['小寫', '大寫'])
# 用columns方法擷取列索引
print(df2.columns)
RangeIndex(start=0, stop=2, step=1)
print(df3.columns)
Index(['小寫', '大寫'], dtype='object')
# 用index方法擷取行索引
print(df2.index)
RangeIndex(start=0, stop=4, step=1)
print(df3.index)
Index(['一', '二', '三', '四'], dtype='object')