Python Pandas中創(chuàng)建Series的三種方法總結(jié)
Pandas中創(chuàng)建Series的三種方法
一、通過列表創(chuàng)建
# encoding=utf-8 import pandas as pd # 定義一個(gè)列表 a = [1, 2, 3, 4] s1 = pd.Series(a) print(s1)
運(yùn)行結(jié)果:
第一列為索引,是Series
在創(chuàng)建時(shí)默認(rèn)生成的,第二列即為值,通過type(s1)
命令即可看到s1
的數(shù)據(jù)類型為:pandas.core.series.Series
,我們也可以將第四行的代碼改為:
`s1 = pd.Series(a, index=["a", "b", "c", "d"])`
重新設(shè)置我們的索引,這樣原先的索引就從0,1,2,3
變?yōu)榱?code>a,b,c,d,更有一定的語(yǔ)義。
如果我們想查看索引和值可以分別通過訪問Series
的index
屬性和values
屬性:
二、通過數(shù)組創(chuàng)建
這里的數(shù)組值的是numpy
中的數(shù)組,它是對(duì)python列表的深度封裝。
我們來(lái)看代碼:
# encoding=utf-8 import pandas as pd import numpy as np # 定義數(shù)組 arr = np.arange(1, 5) s2 = pd.Series(arr) print(s2)
運(yùn)行結(jié)果:
可以看到,也成功創(chuàng)建了一個(gè)Series
。
三、通過字典創(chuàng)建
關(guān)于Series
,筆者認(rèn)為它更像一個(gè)有序的大字典,因此我們用操作字典的習(xí)慣操作Series
往往能得心應(yīng)手。
我們來(lái)看如何通過字典創(chuàng)建一個(gè)Series
:
# encoding=utf-8 import pandas as pd # 創(chuàng)建一個(gè)字典 dic = {"name": "丁少俠", "age": 20, "grade": [100, 99, 88]} s3 = pd.Series(dic) print(s3)
運(yùn)行結(jié)果:
這里我們已經(jīng)成功創(chuàng)建了一個(gè)存放學(xué)生信息的Series
,由于字典自帶key
,因此索引也就自然創(chuàng)建了。
如果我們希望grade
放在第一列,應(yīng)該怎么設(shè)置呢?我們只需要修改第5行代碼:
s3 = pd.Series(dic, index=["grade", "name", "age"])
此時(shí),index
參數(shù)的功能不再是設(shè)置索引,而是根據(jù)索引排序,因?yàn)樽值浔旧碜詭饕?/p>
另外,假如我們將第5行代碼修改為以下呢:
s3 = pd.Series(dic, index=["grade", "name", "age", "sex"])
可以看到,因?yàn)檫@位同學(xué)的性別未知,創(chuàng)建的Series
中,sex
這一欄就只能填NaN
了,通過賦值,即可確定性別。
s3["sex"]="男"
看,像不像字典的操作!?。?!那么我們順著操作字典的思路再試著操作s3
,再添加一個(gè)屬性:hobby
:
s3["hobby"] = ["code,basketball,sleep"]
關(guān)于Series
的操作無(wú)非增刪改查,這里我們點(diǎn)到為止。
Python pandas,pandas.series,series的主要方法
Pandas安裝
pip install pandas
numpy和pandas區(qū)別
numpy
:生成的是ndarray,數(shù)組pandas
:基于numpy,生成兩種對(duì)象,一種是series,一種是dataframe。series
:一維數(shù)組類似array,series=索引+數(shù)據(jù)。區(qū)別是Series能保存不同種數(shù)據(jù)類型,字符串、boolean值、數(shù)字等,而numpy只能存儲(chǔ)同類型數(shù)據(jù)。dataframe
:二維的表格型數(shù)據(jù)結(jié)構(gòu),是組合的series。dataframe 的每一行和每一列都是一個(gè)series。
Series的生成
生成Series:
語(yǔ)法結(jié)構(gòu):
Series(data=None, index=None, dtype=None, name=None, copy=False, fastpath=False)
data
:可傳入數(shù)組,可迭代對(duì)象,字典或標(biāo)量值index
:以數(shù)組或列表形式傳入自定義索引,若不傳值,則默認(rèn)[0,1,2…n],索引的個(gè)數(shù)需與data的長(zhǎng)度相等name
: 自定義series的名字,默認(rèn)none
#Series實(shí)例 import pandas as pd from pandas import Series seri=pd.Series([3,5,-2,9],index=['a','b','c','d']) print(seri) print(type(seri)) #輸出 a 3 b 5 c -2 d 9 dtype: int64 <class 'pandas.core.series.Series'>
Series的主要方法
1.** 獲取series的值:
series.values,:以ndarray結(jié)構(gòu)輸出
import pandas as pd from pandas import Series seri=pd.Series([3,5,-2,9],index=['a','b','c','d']) print(seri.values) print(type(seri.values)) #輸出 [ 3 ?5 -2 ?9] <class 'numpy.ndarray'> #生成series時(shí)傳入的值是list結(jié)構(gòu),輸出的仍是 ndarray結(jié)構(gòu)
獲取series的索引:
series.index,:以pandas index 結(jié)構(gòu)輸出 import pandas as pd from pandas import Series seri=pd.Series([3,5,-2,9],index=['a','b','c','d']) print(seri.index) print(type(seri.index)) #輸出: Index(['a', 'b', 'c', 'd'], dtype='object') <class 'pandas.core.indexes.base.Index'>
通過索引找到對(duì)應(yīng)值:兩種方法:通過位置查找/通過索引名稱查找
import pandas as pd from pandas import Series seri=pd.Series([3,5,-2,9]) seri.index=["a","b","c","d"] print(seri["a"]) #通過索引名稱查找,類似字典 print(seri[0:3])#通過位置切片查找,類似列表/數(shù)組 #輸出 3 a ? ?3 b ? ?5 c ? -2
將字典轉(zhuǎn)換成series:key對(duì)應(yīng)變成index,value為值
import pandas as pd from pandas import Series dic={"a":"5","n":"6","k":"0"} seri=pd.Series(dic) print(seri) #輸出 a ? ?5 n ? ?6 k ? ?0
查找缺失數(shù)據(jù):返回缺失數(shù)據(jù)的索引和非缺失數(shù)據(jù)的索引+值
import pandas as pd from pandas import Series dic={"a":'',"n":"","k":"0"} seri=pd.Series(dic) print(seri.isnull) #輸出: <bound method Series.isnull of a ? ? n ? ?? k ? ?0
判斷series中是否存在缺失數(shù)據(jù):seri.isnull().any(),輸出布爾值
注:numpy.nan 是生成確實(shí)數(shù)據(jù)的方法,nan: not a num
import numpy as np import pandas as pd from pandas import Series dic={"a":np.nan,"n":np.nan,"k":"f"} seri=pd.Series(dic) print(seri.isnull().all()) #輸出: False #ps: 判斷series中是否都為缺失數(shù)據(jù):series.isnull().any(),輸出布爾值
去重:series.unique()
import pandas as pd from pandas import DataFrame from pandas import Series data=["a","k","m","a","w","m","9"] obj=Series(data) uniques=obj.unique() print(uniques) #輸出: ['a' 'k' 'm' 'w' '9'] #注:也可以用python 的set函數(shù), print(set(data)) #輸出 {'m', 'w', '9', 'a', 'k'} #區(qū)別: set去重后會(huì)改變?cè)瓉?lái)的順序,而unique不會(huì) set生成的事set對(duì)象 <class 'set'>,而unique生成的事ndarray對(duì)象 <class 'numpy.ndarray'>
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
計(jì)算機(jī)二級(jí)python學(xué)習(xí)教程(1) 教大家如何學(xué)習(xí)python
這篇文章主要為大家詳細(xì)介紹了計(jì)算機(jī)二級(jí)python學(xué)習(xí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-05-05Python學(xué)習(xí)筆記之Zip和Enumerate用法實(shí)例分析
這篇文章主要介紹了Python學(xué)習(xí)筆記之Zip和Enumerate用法,結(jié)合實(shí)例形式分析了Zip和Enumerate的功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-08-08wxPython多個(gè)窗口的基本結(jié)構(gòu)
這篇文章主要為大家詳細(xì)介紹了wxPython多個(gè)窗口的基本結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11Win10環(huán)境中如何實(shí)現(xiàn)python2和python3并存
這篇文章主要介紹了Win10環(huán)境中如何實(shí)現(xiàn)python2和python3并存,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07YOLOv5中SPP/SPPF結(jié)構(gòu)源碼詳析(內(nèi)含注釋分析)
其實(shí)關(guān)于YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)其實(shí)網(wǎng)上相關(guān)的講解已經(jīng)有很多了,但是覺著還是有必要再給大家介紹下,下面這篇文章主要給大家介紹了關(guān)于YOLOv5中SPP/SPPF結(jié)構(gòu)源碼的相關(guān)資料,需要的朋友可以參考下2022-05-05