python之pandas學習
Python中的pandas模組進行資料分析。
接下來pandas介紹中將學習到如下8塊內容:
1、資料結構簡介:DataFrame和Series
2、資料索引index
3、利用pandas查詢資料
4、利用pandas的DataFrames進行統計分析
5、利用pandas實現SQL操作
6、利用pandas進行缺失值的處理
7、利用pandas實現Excel的資料透視表功能
8、多層索引的使用
一、資料結構介紹
在pandas中有兩類非常重要的資料結構,即序列Series和資料框DataFrame。Series類似於numpy中的一維陣列,除了通吃一維陣列可用的函式或方法,而且其可通過索引標籤的方式獲取資料,還具有索引的自動對齊功能;DataFrame類似於numpy中的二維陣列,同樣可以通用numpy陣列的函式和方法,而且還具有其他靈活應用,後續會介紹到。
1、Series的建立
序列的建立主要有三種方式:
1)通過一維陣列建立序列
import numpy as np, pandas as pd
arr1 = np.arange(10)
print(arr1)
print(type(arr1))
s1 = pd.Series(arr1)
print(s1)
print(type(s1))
實驗結果:
[0 1 2 3 4 5 6 7 8 9]
<class 'numpy.ndarray'>
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int32
<class 'pandas.core.series.Series'>
2)通過字典的方式建立序列
dic1 = {'a':10,'b':20,'c':30,'d':40,'e':50}
print(dic1)
print(type(dic1))
s2 = pd.Series(dic1)
print(s2)
print(type(s2))
實驗結果:
{'c': 30, 'b': 20, 'e': 50, 'a': 10, 'd': 40}
<class 'dict'>
a 10
b 20
c 30
d 40
e 50
dtype: int64
<class 'pandas.core.series.Series'>
3)通過DataFrame中的某一行或某一列建立序列
這部分內容我們放在後面講,因為下面就開始將DataFrame的建立。
2、DataFrame的建立
資料框的建立主要有三種方式:
1)通過二維陣列建立資料框
import numpy as np, pandas as pd
arr2 = np.array(np.arange(12)).reshape(4,3)
print(arr2)
print(type(arr2))
df1 = pd.DataFrame(arr2)
print(df1)
print(type(df1))
實驗結果:
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
<class 'numpy.ndarray'>
0 1 2
0 0 1 2
1 3 4 5
2 6 7 8
3 9 10 11
<class 'pandas.core.frame.DataFrame'>
2)通過字典的方式建立資料框
以下以兩種字典來建立資料框,一個是字典列表,一個是巢狀字典。
dic2 = {'a':[1,2,3,4],'b':[5,6,7,8],
'c':[9,10,11,12],'d':[13,14,15,16]}
print(dic2)
print(type(dic2))
df2 = pd.DataFrame(dic2)
print(df2)
print(type(df2))
dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},
'two':{'a':5,'b':6,'c':7,'d':8},
'three':{'a':9,'b':10,'c':11,'d':12}}
print(dic3)
print(type(dic3))
df3 = pd.DataFrame(dic3)
print(df3)
print(type(df3))
實驗結果:
{'d': [13, 14, 15, 16], 'b': [5, 6, 7, 8], 'a': [1, 2, 3, 4], 'c': [9, 10, 11, 12]}
<class 'dict'>
a b c d
0 1 5 9 13
1 2 6 10 14
2 3 7 11 15
3 4 8 12 16
<class 'pandas.core.frame.DataFrame'>
{'two': {'d': 8, 'b': 6, 'a': 5, 'c': 7}, 'one': {'d': 4, 'b': 2, 'a': 1, 'c': 3}, 'three': {'d': 12, 'b': 10, 'a': 9, 'c': 11}}
<class 'dict'>
one three two
a 1 9 5
b 2 10 6
c 3 11 7
d 4 12 8
<class 'pandas.core.frame.DataFrame'>
3)通過資料框的方式建立資料框
dic3 = {'one':{'a':1,'b':2,'c':3,'d':4},
'two':{'a':5,'b':6,'c':7,'d':8},
'three':{'a':9,'b':10,'c':11,'d':12}}
print(dic3)
print(type(dic3))
df3 = pd.DataFrame(dic3)
# print(df3)
# print(type(df3))
df4 = df3[['one','three']]
print(df4)
print(type(df4))
s3 = df3['one']
print(s3)
print(type(s3))
實驗結果:
{'one': {'d': 4, 'b': 2, 'a': 1, 'c': 3}, 'three': {'d': 12, 'b': 10, 'a': 9, 'c': 11}, 'two': {'d': 8, 'b': 6, 'a': 5, 'c': 7}}
<class 'dict'>
one three
a 1 9
b 2 10
c 3 11
d 4 12
<class 'pandas.core.frame.DataFrame'>
a 1
b 2
c 3
d 4
Name: one, dtype: int64
<class 'pandas.core.series.Series'>
pandas模組為我們提供了非常多的描述性統計分析的指標函式,如總和、均值、最小值、最大值等,我們來具體看看這些函式:
首先隨機生成三組資料
np.random.seed(1234)
d1 = pd.Series(2*np.random.normal(size = 10)+3)
print(d1)
d2 = np.random.f(2,4,size = 10)
print(d2)
d3 = np.random.randint(1,100,size = 10)
print(d3)
print(d1.count()) #非空元素計算
print(d1.min()) #最小值
print(d1.max()) #最大值
print(d1.idxmin()) #最小值的位置,類似於R中的which.min函式
print(d1.idxmax()) #最大值的位置,類似於R中的which.max函式
print(d1.quantile(0.1)) #10%分位數
print(d1.sum()) #求和
print(d1.mean()) #均值
print(d1.median()) #中位數
print(d1.mode()) #眾數
print(d1.var()) #方差
print(d1.std()) #標準差
print(d1.mad()) #平均絕對偏差
print(d1.skew()) #偏度
print(d1.kurt()) #峰度
print(d1.describe()) #一次性輸出多個描述性統計指標
實驗結果:
0 3.942870
1 0.618049
2 5.865414
3 2.374696
4 1.558823
5 4.774326
6 4.719177
7 1.726953
8 3.031393
9 -1.485370
dtype: float64
[ 2.95903083 0.32784914 2.27321231 0.05147861 9.10291941 0.15691116
0.99021894 1.84169938 0.32196418 0.04276792]
[57 71 57 87 45 91 84 48 50 19]
10
-1.48536990837
5.86541393685
9
2
0.4077067586912829
27.1263301511
2.71263301511
2.703044476022716
Series([], dtype: float64)
4.91771912101
2.21759309185
1.75400292821
-0.453758801844
-0.116260760058
count 10.000000
mean 2.712633
std 2.217593
min -1.485370
25% 1.600855
50% 2.703044
75% 4.525100
max 5.865414
dtype: float64
相關文章
- pandas學習之Python基礎Python
- [python]pandas學習Python
- python綜合學習四之Numpy和Pandas(下)Python
- Python學習之Pandas和Numpy的區別!Python
- pandas 學習(1): pandas 資料結構之Series資料結構
- pandas 學習(2): pandas 資料結構之DataFrame資料結構
- Python 資料科學之 PandasPython資料科學
- pandas之常用基本函式學習筆記函式筆記
- Pandas基礎學習
- pandas學習筆記筆記
- pandas 學習總結
- 基於python的大資料分析實戰學習筆記-pandas之DataFramePython大資料筆記
- 【pandas學習筆記】Series筆記
- 【pandas學習筆記】DataFrame筆記
- Pandas大綱學習-0
- pandas的學習總結
- Python資料分析之pandasPython
- numpy的學習筆記\pandas學習筆記筆記
- 【pandas學習筆記】綜合整理筆記
- Numpy與Pandas學習網站學習網站
- 【Task03】Pandas學習打卡
- Python資料分析之Pandas篇Python
- python之pandas的基本使用(1)Python
- Python學習之模組Python
- Python之numpy學習Python
- Python之Series 學習Python
- pandas 學習筆記 (入門篇)筆記
- 組隊學習2——pandas基礎
- pandas組隊學習task06
- Pandas學習筆記1(序列部分)筆記
- Summary Functions and Maps(pandas學習三)Function
- 學習python中的pandas有沒有好的教程推薦?Python
- python及pandas,numpy等知識點技巧點學習筆記Python筆記
- Python資料分析庫之pandas,你該這麼學!No.1Python
- 【python】python 模組學習之--FabricPython
- 【python】python 模組學習之--pexpectPython
- Pandas之:Pandas簡潔教程
- Python學習之共享引用Python