日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python开发pandas_二、Python开发---33、pandas(1)

發布時間:2023/12/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python开发pandas_二、Python开发---33、pandas(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pandas

pandas是一種Python數據分析的利器,是一個開源的數據分析包,最初是應用于金融數據分析工具而開發出來的,因此pandas為時間序列分析提供了很好的支持,pandas是PyData項目的一部分,它主要提供了五大功能:

支持文件存取操作,支持數據庫(sql)、html、json、pickle、csv(txt、excel)、sas、stata、hdf等

支持增刪改查、切片、高階函數、分組聚合等單表操作,以及和dict、list的互相轉換

支持多表拼接合并操作

支持簡單的繪圖操作

支持簡單的統計分析操作

官網:http://pandas.pydata.org/

官方文檔:http://pandas.pydata.org/pandas-docs/stable/

pandas引入約定——from pandas import Series, DataFrame

import pandas as pd

pandas中主要有兩種數據結構,分別是:Series和DataFrame

(1)Series:一種類似于一維數組的對象,是由一組數據(各種NumPy數據類型)以及一組與之相關的數據標簽(即索引)組成,僅由一組數據也可產生簡單的Series對象,注意:Series中的索引值是可以重復的

(2)DataFrame:一個表格型的數據結構,包含有一組有序的列,每列可以是不同的值類型(數值、字符串、布爾型等),DataFrame既有行索引也有列索引,可以被看做是由Series組成的字典

Series的創建

1、通過一維數組創建

Series屬性——常見屬性有values(獲取值)、index(獲得索引值)、dtype(獲得類型)

'''輸出為 0 1

1 2

2 3

3 4

4 5

dtype: int64'''

importpandas as pd

ser01= pd.Series([1,2,3,4,5])print(ser01)print('值',ser01.values) #輸出為 值 [1 2 3 4 5]

print('索引值',ser01.index) #輸出為 索引值 RangeIndex(start=0, stop=5, step=1)

print('類型',ser01.dtype) #輸出為 類型 int64

2、通過ndarray創建,利用series創建一個二維數組,因為series只能直接創建一維數組,如果要創建二維數組,必須導入numpy模塊,利用np.array(多維數組)

'''輸出為 0 [1, 2, 3, 4]

1 [1, 2, 3, 4, 5]

dtype: object'''

importpandas as pdimportnumpy as np

ser02=pd.Series(np.array([[1,2,3,4],[1,2,3,4,5]]))#表示將numpy里array創建多維數組的方法,嵌套到series里,創建多維數組

print(ser02)print('值',ser02.values) #輸出為 值 [list([1, 2, 3, 4]) list([1, 2, 3, 4, 5])]

print('索引值',ser02.index) #輸出為 索引值 RangeIndex(start=0, stop=2, step=1)

print('類型',ser02.dtype) #輸出為 類型 object

修改索引(index)和數據類型(dtype)

importpandas as pdimportnumpy as np

ser03=pd.Series([100,22,99,66])

ser03.index=['數學','英語','語文','綜合']print(ser03)'''輸出為 數學 100

英語 22

語文 99

綜合 66

dtype: int64'''

#另一種寫法

ser04=pd.Series(data=[100,22,99,66],dtype=np.float,index=['數學','英語','語文','綜合'])print(ser04)'''輸出為 數學 100.0

英語 22.0

語文 99.0

綜合 66.0

dtype: float64'''

3、通過字典方式創建series多維數組

#通過字典方式創建series多維數組

importpandas as pdimportnumpy as np

dict01=({'1001':'張三','1002':'李四','1003':'王麻子'})    #字典存放鍵值對-通過key取值

ser06=pd.Series(dict01) #將字典數據傳到series中,形成矩陣

print(ser06)'''輸出為 1001 張三

1002 李四

1003 王麻子

dtype: object'''

print('字典創建的值:',ser06.values)               #輸出為 字典創建的值: ['張三' '李四' '王麻子']

print('字典創建的索引:',ser06.index)               #輸出為 字典創建的索引: Index(['1001', '1002', '1003'], dtype='object')

Series值的獲取

Series值的獲取主要有兩種方式:

1、通過方括號+索引的方式讀取對應索引的數據,有可能返回多條數據

2、通過方括號+下標值的方式讀取對應下標值的數據,下標值的取值范圍為:(0,len(Series.values));另外下標值也可以是負數,表示從右往左獲取數據

series獲取多個值的方法類似numpy的bdarray切片操作,通過方括號+下標值/索引值+冒號(:)的形式獲取series對象的一部分數據

切片的兩種操作:

1、print(ser01[0:2])—通過下標值

2、print(ser01[‘a’:‘c’])–通過索引值

importpandas as pd#方括號+下標值

ser07=pd.Series(['A','B','C','D'])print(ser07[0]) #輸出為 A#方括號+索引

ser08=pd.Series(['A','B','C','D'])

ser08.index=(['a','b','c','d'])print(ser08['a']) #輸出為 A#通過numpy的ndarray的切片機制

ser09=pd.Series(['A','B','C','D'])

ser09.index=(['a','b','c','d'])#通過下標值

print(ser09[0:2]) #不包含終點

'''輸出為 a A

b B

dtype: object'''

#通過索引值

print(ser09['a':'c']) #包含終點

'''輸出為 a A

b B

c C

dtype: object'''

Series的運算

NumPy中的數組運算,在Series中都保留了,均可以使用,并且Series進行數組運算的時候,索引與值之間的映射關系不會發生改變,注意:其實在操作Series的時候,基本上可以把Series看成NumPy中的ndarray數組來進行操作,ndarray數組的絕大多數操作都可以應用到Series上

importpandas as pdimportnumpy as np

ser=pd.Series({'201612348':1000,'201612347':999,'201612346':666,'201612345':555})print(ser)'''輸出為 201612348 1000

201612347 999

201612346 666

201612345 555

dtype: int64'''

print(ser[ser>666])'''輸出為 201612348 1000

201612347 999

dtype: int64'''

print(ser/10)'''輸出為 201612348 100.0

201612347 99.9

201612346 66.6

201612345 55.5

dtype: float64'''

print(ser+1)'''輸出為 201612348 1001

201612347 1000

201612346 667

201612345 556

dtype: int64'''ser01=pd.Series([-1,-2,-3,-4])print(ser01)'''輸出為 0 -1

1 -2

2 -3

3 -4

dtype: int64'''

print(np.exp(ser01))'''輸出為 0 0.367879

1 0.135335

2 0.049787

3 0.018316

dtype: float64'''

print(np.fabs(ser01))'''輸出為 0 1.0

1 2.0

2 3.0

3 4.0

dtype: float64'''

Series缺失值檢測

1、什么是缺失值?沒有被賦值

2、確實和不賦值的區別:

不賦值——空指針異常

缺失——程序不會報空指針異常,也不會報程序異常,會用NaN填充

3、pandas中的isnull和notnul這兩個函數可以用在Series中檢查缺失值,這兩個函數返回的是一個布爾類型的Series

isnull——表示字典里有缺失值的判斷,有缺失值返回true反之false(返回的是bool類型)

notnull——表示字典里有缺失值的判斷,有缺失值返回false反之true(返回的是bool類型)

#缺失值檢測

importpandas as pdimportnumpy as np

ser16=pd.Series({'1001':'a','1002':'b','1003':'c'})print(ser16)'''輸出為 1001 a

1002 b

1003 c

dtype: object'''ser17=pd.Series(ser16,index=['1001','1002','1008'])print(ser17)'''輸出為 1001 a

1002 b

1008 NaN

dtype: object'''

#isnull

print(pd.isnull(ser17))'''輸出為 1001 False

1002 False

1008 True

dtype: bool'''

#notnull

print(pd.notnull(ser17))'''輸出為 1001 True

1002 True

1008 False

dtype: bool'''

Series自動對齊

當多個series對象之間進行運算的時候,如果不同series之間具有不同的索引值,那么運算會自動對齊不同索引值的數據,如果某個series沒有某個索引值,那么最終結果會賦值為NaN

自動對齊是基于一個列表元素或者多維數據的矩陣/矩陣乘積

原理:通過Series自動匹配index所對應的值,有匹配的值和index,按照原數據打印數據,如果對應位置沒有index值,那么用NAN填充

#順序不同

importpandas as pdser18=pd.Series([1,2,3,4],index=['a','b','c','d'])print(ser18)'''輸出為 a 1

b 2

c 3

d 4

dtype: int64'''ser19=pd.Series([10,20,30,40],index=['d','c','b','a'])print(ser18+ser19)'''輸出為 a 41

b 32

c 23

d 14

dtype: int64'''

#沒有某個索引值

ser20=pd.Series([1,2,3,4],index=['a','b','c','d'])print(ser20)'''輸出為 a 1

b 2

c 3

d 4

dtype: int64'''ser21=pd.Series([10,20,30,40],index=['d','c','b','f'])print(ser20+ser21)'''輸出為 a NaN

b 32.0

c 23.0

d 14.0

f NaN

dtype: float64'''

Series及其索引的name屬性

Series對象本身以及索引都具有一個name屬性,默認為空,根據需要可以進行賦值操作

#series的name屬性

importpandas as pd

ser22=pd.Series({'1001':'a','1002':'b','1003':'c'})

ser22.name='字母'ser22.index.name='小寫字母'

print(ser22)'''輸出為 小寫字母

1001 a

1002 b

1003 c

Name: 字母, dtype: object'''

總結

以上是生活随笔為你收集整理的python开发pandas_二、Python开发---33、pandas(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。