天天看點

python資料分析-Pandas資料結構(1)pandas資料結構

聲明:此文隻是對《對比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')