Pandas基礎介紹
Pandas介紹與安裝
為什麼會有Pandas
Pandas支援大部分Numpy語言風格,尤其是陣列函式與廣播機制的各種資料處理。單是Numpy更適合處理同質型的資料。而Pandas的設計就是用來處理表格型或異性資料的,高效的清洗、處理資料。
Pandas是什麼?
Pandas是基於Numpy的一種工具,提供高效能矩陣的運算,該工具是為了解決資料分析任何而建立的。也是貫穿整個Python資料分析非常核心的工具
安裝Pandas
pip install Pandas
Pandas涉及內容
Pandas基礎 、資料清洗與準備、資料聚合與分組、時間序列
Pandas資料結構介紹
Series介紹
Series是一種一維陣列物件,它包含了一個值序列(value) ,並且包含了資料標籤,稱之為索引 (index)
Series建立
pd.Series(data=None,index=None,dtype=None,name=None,copy=False)
data : 建立陣列的資料,可為array、like、dict、or scalar value
index : 指定索引
dtype : 陣列資料型別
name : 陣列名稱
copy : 是否複製
Pandas陣列函式
語法 基本使用
dtype 檢視資料型別
astype 修改資料型別
head() 預覽前幾條資料
tail() 預覽後幾條資料
In [15]: # 指定索引序列
In [16]: series = pd.Series(np.arange(4),index=['a','b','c','d'])
In [17]: series
Out[17]:
a 0
b 1
c 2
d 3
dtype: int32
In [18]: # 指定索引的名字
In [19]: series = pd.Series(np.arange(4),index=['a','b','c','d'],name='SmallJ')
In [20]: series
Out[20]:
a 0
b 1
c 2
d 3
Name: SmallJ, dtype: int32
In [21]: # 預設返回int32,可指定其他型別
In [23]: series = pd.Series(np.arange(4),index=['a','b','c','d'],name='SmallJ',dtype='int64')
In [24]: series
Out[24]:
a 0
b 1
c 2
d 3
Name: SmallJ, dtype: int64
In [29]: import numpy as np
In [30]: import pandas as pd
In [31]: series = pd.Series(np.arange(10),name='SmallJ')
In [32]: series
Out[32]:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
Name: SmallJ, dtype: int32
In [33]: # 前面為索引後面為值
In [34]: series.dtype
Out[34]: dtype('int32')
In [35]: # 檢視資料型別
In [36]: series.dtype
Out[36]: dtype('int32')
In [37]: # 修改資料型別
In [38]: series.astype('float64')
Out[38]:
0 0.0
1 1.0
2 2.0
3 3.0
4 4.0
5 5.0
6 6.0
7 7.0
8 8.0
9 9.0
Name: SmallJ, dtype: float64
In [39]: # 預覽從頭開始的資料 (括號內填指定的資料)
In [40]: series.head(5)
Out[40]:
0 0
1 1
2 2
3 3
4 4
Name: SmallJ, dtype: int32
In [41]: series.head(6)
Out[41]:
0 0
1 1
2 2
3 3
4 4
5 5
Name: SmallJ, dtype: int32
In [42]: # 預覽最後的資料 (括號填指定的資料)
In [43]: series.tail(5)
Out[43]:
5 5
6 6
7 7
8 8
9 9
Name: SmallJ, dtype: int32
Series的索引與值
series.index
檢視索引
series.values
檢視值序列
series.reset_index(drop=False)
重置索引
drop 是否刪除原索引 預設為否
In [89]: import pandas as pd
In [90]: import numpy as np
In [91]: series = pd.Series(data=np.arange(5),index=['a','b','c','d','e'])
In [92]: series
Out[92]:
a 0
b 1
c 2
d 3
e 4
dtype: int32
In [93]: # 檢視索引
In [94]: series.index
Out[94]: Index(['a', 'b', 'c', 'd', 'e'], dtype='object')
In [95]: series.values
Out[95]: array([0, 1, 2, 3, 4])
In [96]: series.reset_index()
Out[96]:
index 0
0 a 0
1 b 1
2 c 2
3 d 3
4 e 4
In [98]: series
Out[98]:
a 0
b 1
c 2
d 3
e 4
dtype: int32
In [99]: # 檢視值序列
In [100]: series.values
Out[100]: array([0, 1, 2, 3, 4])
In [101]: # 當drop中的值為True的時候將採用刪除原索引,並不會對原資料進行修改,需要複製
In [102]: series = series.reset_index(drop=True)
In [103]: series
Out[103]:
0 0
1 1
2 2
3 3
4 4
dtype: int32
Series索引與切片
series.[‘標籤索引’]
透過標籤索引來取值
series[‘索引’]
透過下標索引來取值
series.loc(標籤索引)
透過標籤索引來取值
series.iloc(索引)
透過索引
In [115]: # 透過標籤來取值
In [116]: series.loc['b']
Out[116]: 1
In [117]: # 透過索引下標來取值
In [118]: series.iloc[1]
Out[118]: 1
採用神奇索引
In [139]: series
Out[139]:
a 0
b 1
c 10
d 3
e 22
dtype: int32
In [141]: # 採用標籤來取值
In [142]: series[['a','e']]
Out[142]:
a 0
e 22
dtype: int32
In [143]: # 採用索引取值
In [144]: series[[0,-1]]
Out[144]:
a 0
e 22
dtype: int32
Series修改值
In [122]: series
Out[122]:
a 0
b 1
c 2
d 3
e 4
dtype: int32
透過索引來修改值
series.iloc[2] = 10
透過標籤來修改值
series.loc['e'] = 22
In [139]: series
Out[139]:
a 0
b 1
c 10
d 3
e 22
dtype: int32
判斷值是否存在
in 並不是判斷值,而是根據標籤索引來判斷
Series運算
共同索引對應運算,其他值填充為NaN
Pandas會自動幫我們進行資料轉換,當我們的資料型別為None時,會把資料替換為NaN
當沒用透過索引的時候,將全部變為NaN
NaN與任何值計算都是NaN
In [148]: data = pd.Series(data=[1,2,3,4,None],index=['a','b','c','d','e'])
In [149]: data
Out[149]:
a 1.0
b 2.0
c 3.0
d 4.0
e NaN
dtype: float64
當進行對應標籤索引進行相加的時候
In [148]: data = pd.Series(data=[1,2,3,4,None],index=['a','b','c','d','e'])
In [149]: data
Out[149]:
a 1.0
b 2.0
c 3.0
d 4.0
e NaN
dtype: float64
In [150]: data1 = pd.Series(data=[1,2,3,4,None],index=['a','b','c','d','e'])
In [151]: data1
Out[151]:
a 1.0
b 2.0
c 3.0
d 4.0
e NaN
dtype: float64
In [152]: data + data1
Out[152]:
a 2.0
b 4.0
c 6.0
d 8.0
e NaN
dtype: float64
當對應的標籤索引位置進行相加時
當對應是索引的位置沒有數值時,顯示的數值為NaN
In [148]: data = pd.Series(data=[1,2,3,4,None],index=['a','b','c','d','e'])
In [153]: data2 = pd.Series(data=[1,2,3],index=['a','b','c'])
In [156]: data
Out[156]:
a 1.0
b 2.0
c 3.0
d 4.0
e NaN
dtype: float64
In [157]: data2
Out[157]:
a 1
b 2
c 3
dtype: int64
In [158]: data + data2
Out[158]:
a 2.0
b 4.0
c 6.0
d NaN
e NaN
dtype: float64
當不對應的索引標籤進行相加的時候
當對應的索引標籤不相同的時,顯示的全部結果為NaN
In [161]: data2 = pd.Series(data=[1,2,3],index=['a','b','c'])
In [162]: data3 = pd.Series(data=[1,2,3,4],index=['d','e','f','g'])
In [163]: data2
Out[163]:
a 1
b 2
c 3
dtype: int64
In [164]: data3
Out[164]:
d 1
e 2
f 3
g 4
dtype: int64
In [165]: data2 + data3
Out[165]:
a NaN
b NaN
c NaN
d NaN
e NaN
f NaN
g NaN
dtype: float64
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2690149/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Elasticsearch 基礎介紹Elasticsearch
- kafka 基礎介紹Kafka
- kafka基礎介紹Kafka
- Pandas基礎
- Pandas 基礎 (2) - Dataframe 基礎
- Pandas進階貳 pandas基礎
- ActiveMq的基礎介紹MQ
- MySQL 教程基礎介紹MySql
- JDBC的基礎介紹JDBC
- 基礎 RAID 介紹AI
- java基礎介紹(轉)Java
- 1、Oracle 基礎介紹Oracle
- OSPF介紹及基礎配置
- Django基礎教程之介紹Django
- ConstraintLayout基礎介紹AI
- Epub基礎知識介紹
- HT for Web基礎動畫介紹Web動畫
- 分割槽表基礎介紹
- Pandas基礎學習
- pandas - 基礎屬性
- 資料倉儲基礎介紹
- 02-ASP.Net(基礎介紹)ASP.NET
- Xtrabackup介紹和使用【基礎篇】
- Spark Streaming基礎概念介紹Spark
- Pandas 基礎 (18) - Period and PeriodIndexIndex
- 4.pandas基礎使用
- Jumpserver基礎運維-01介紹Server運維
- 金融反欺詐-交易基礎介紹
- Android RxJava:基礎介紹與使用AndroidRxJava
- 【重溫基礎】17.WebAPI介紹WebAPI
- 資料庫基礎知識介紹!資料庫
- Linux shell 指令碼基礎介紹Linux指令碼
- [java基礎]之JDK目錄介紹JavaJDK
- 【ES6基礎】const介紹
- PEG.js 介紹與基礎使用JS
- 詳解javascript拖拽(一)基礎介紹JavaScript
- 介紹一個QTP基礎框架 - SIFLQT框架
- TCL指令碼語言基礎介紹指令碼