天天看點

Python之Pandas子產品入門講解及案例

Python之Pandas子產品講解及案例

一、安裝Pandas

pip install Pandas

二、簡介

Pandas是一個開源的,BSD許可的庫,為Python (opens new window)程式設計語言提供高性能,易于使用的資料結構和資料分析工具。

Pandas是NumFOCUS (opens new window)贊助的項目。這将有助于確定Pandas成為世界級開源項目的成功,并有可能捐贈 (opens new window)給該項目。

另外,獲得 Pandas 的最佳方式是通過 conda(opens new window):

conda install Pandas

但是此方法安裝較慢,不太推薦,可以直接pip。

三、Series類

1、Series對象的實作

Series對象是相當于一個一維的數組

方法1

import pandas as pd
"""
導入pandas子產品
"""
ser_0 = pd.Series(data=[0, 1, 2, 3, 4, 5])
# data 參數表示:所取得的數值是多少
print(ser_0)


# output>
0    0
1    1
2    2
3    3
4    4
5    5
dtype: int64
# 第一列是索引(indexs)
# 第二列是數值(values)      

方法2

import pandas as pd
ser_1 = pd.Series(data=[0, 1, 2, 3], index=['a', 'b', 'c', 'd'])
# index 表示自定義索引
print(ser_1)


# output>
a    0
b    1
c    2
d    3
dtype:      

方法3

import pandas as pd
config = {
    'one':1,
    'two':2,
    'three':3,
    'four':4
}
# 字典
ser_2 = pd.Series(config)
print(ser_2)


# output>
one      1
two      2
three    3
four     4
dtype:      

2、Head與Tail

head() 與 tail() 用于快速預覽 Series 與 DataFrame,預設顯示 5 條資料,也可以指定顯示資料的數量。

這裡先以Series為例,DataFrame會在後續講解。

下面将用到numpy子產品,關于numpy子產品的講解可以參見我的另一篇博文:

python 之 numpy 子產品詳細講解及其應用案例

連結​

import pandas as pd
import numpy as np
index_list = list('abcdefghijklmnopqrst')
data_list = np.arange(20)
ser = pd.Series(data=data_list, index=index_list)
print(ser.head())
print(ser.head(3))
print(ser.tail())
print(ser.tail(3))


# output>
a    0
b    1
c    2
d    3
e    4
dtype: int32

a    0
b    1
c    2
dtype: int32

p    15
q    16
r    17
s    18
t    19
dtype: int32

r    17
s    18
t    19
dtype:      

3、屬性與底層資料

index屬性

values屬性

import pandas as pd
ser = pd.Series(data=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l'])
print(ser.index)
print(ser.values)


# output>
Index(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l'], dtype='object')
[ 0  1  2  3  4  5  6  7  8  9 10]      

4、Series對象的切片操作

實際上,Series對象的切片與數組的切片差别并不大。

import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 11])
print(ser[0])
print(ser[1:7])
print(ser[0:8:2])
print(ser[:])
print(ser[-5:-2])


# output>
1

1    2
2    3
3    4
4    5
5    6
6    7
dtype: int64

0    1
2    3
4    5
6    7
dtype: int64

0      1
1      2
2      3
3      4
4      5
5      6
6      7
7      8
8      9
9      0
10    11
dtype: int64

6    7
7    8
8    9
dtype:      

5、Series對象的一些常用方法

1、Series.index

索引

2、Series.values

數值

3、Series.drop(index)

删除某一個資料

4、Series.sum

求所有元素的和

四、DataFrame類

1、DataFrame對象的實作

方法1

import pandas as pd
df = pd.DataFrame([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]])
print(df)      
Python之Pandas子產品入門講解及案例

方法2

import pandas as pd
df = pd.DataFrame(data=[[0, 1, 2, 3, 4], [5, 6, 7, 8, 9]], index=['a', 'b'])
print(df)      
Python之Pandas子產品入門講解及案例

方法3

import pandas as pd
config={
    'a': [1, 2, 3, 4, 5],
    'b': [4, 5, 6, 7, 8],
    'c': [2, 4, 6, 8, 10]
}
df = pd.DataFrame(data=config,index=['one', 'two', 'three', 'four', 'five'])
print(df)      
Python之Pandas子產品入門講解及案例

2、DataFrame的取值以及切片

1、取值

Head、 Tail 方法

import pandas as pd
config = {
    'a': [0, 1, 2, 3, 4, 5, 6, 7],
    'b': [8, 9, 10, 11, 12, 13, 14, 15],
    'c': [3, 6, 9, 11, 13, 15, 17, 19],
    'd': [2, 4, 6, 9, 12, 14, 16, 18,] 
}
df = pd.DataFrame(data=config, index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print(df)
print(df.head())
print(df.tail())      
Python之Pandas子產品入門講解及案例
Python之Pandas子產品入門講解及案例
Python之Pandas子產品入門講解及案例

某一個位置處的值:

import pandas as pd
config = {
    'a': [0, 1, 2, 3, 4, 5, 6, 7],
    'b': [8, 9, 10, 11, 12, 13, 14, 15],
    'c': [3, 6, 9, 11, 13, 15, 17, 19],
    'd': [2, 4, 6, 9, 12, 14, 16, 18,] 
}
df = pd.DataFrame(data=config, index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print(df.a.a)
print(df.a.b)
print(df.c.f)
# 實際上是相當于取出字典中的資料的類似方法,
# 先去取一列,
# 再從這一列中去取出來某一行的資料點。


# output>
0
1
15      

2、切片

1、行切片

import pandas as pd
config = {
    'a': [0, 1, 2, 3, 4, 5, 6, 7],
    'b': [8, 9, 10, 11, 12, 13, 14, 15],
    'c': [3, 6, 9, 11, 13, 15, 17, 19],
    'd': [2, 4, 6, 9, 12, 14, 16, 18,] 
}
df = pd.DataFrame(data=config, index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print(df[0:4])
# 從第零行切刀第三行資料
print(df['a':'c'])
# 從下标為 a 的行一直切到下标為 b 的行      
Python之Pandas子產品入門講解及案例
Python之Pandas子產品入門講解及案例

2、列切片

import pandas as pd
config = {
    'a': [0, 1, 2, 3, 4, 5, 6, 7],
    'b': [8, 9, 10, 11, 12, 13, 14, 15],
    'c': [3, 6, 9, 11, 13, 15, 17, 19],
    'd': [2, 4, 6, 9, 12, 14, 16, 18,] 
}
df = pd.DataFrame(data=config, index=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
print(df.a)
print(df.b)
print(df.c)


# output>

a    0
b    1
c    2
d    3
e    4
f    5
g    6
h    7
Name: a, dtype: int64

a     8
b     9
c    10
d    11
e    12
f    13
g    14
h    15
Name: b, dtype: int64

a     3
b     6
c     9
d    11
e    13
f    15
g    17
h    19
Name: c, dtype:      

3、舉一個例子,利用以上的類以及numpy來實作一個時間清單

import pandas as pd
import numpy as np
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))
print(df)
print(df.dtypes)
# 檢視類型
print(df.describe())
# 檢視對資料的統計結果


# output>
 A         B         C         D
2013-01-01 -1.177484  0.516432 -0.425316 -0.499715
2013-01-02 -0.128610 -1.052472 -0.151716 -0.019494
2013-01-03  0.257262 -0.857907  0.111126 -1.584577
2013-01-04  0.383851 -0.952546 -0.867269 -0.760178
2013-01-05  1.489054 -0.727922 -0.190620  0.230165
2013-01-06 -0.210085  1.699750 -0.100482 -0.784437

A    float64
B    float64
C    float64
D    float64
dtype: object

 A         B         C         D
count  6.000000  6.000000  6.000000  6.000000
mean   0.102332 -0.229111 -0.270713 -0.569706
std    0.873513  1.106510  0.339157  0.641838
min   -1.177484 -1.052472 -0.867269 -1.584577
25%   -0.189716 -0.928886 -0.366642 -0.778372
50%    0.064326 -0.792915 -0.171168 -0.629947
75%    0.352204  0.205343 -0.113291 -0.139549
max    1.489054  1.699750  0.111126  0.230165      
Python之Pandas子產品入門講解及案例
Python之Pandas子產品入門講解及案例
Python之Pandas子產品入門講解及案例