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-05
Python學(xué)習(xí)筆記之Zip和Enumerate用法實(shí)例分析
這篇文章主要介紹了Python學(xué)習(xí)筆記之Zip和Enumerate用法,結(jié)合實(shí)例形式分析了Zip和Enumerate的功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-08-08
wxPython多個(gè)窗口的基本結(jié)構(gòu)
這篇文章主要為大家詳細(xì)介紹了wxPython多個(gè)窗口的基本結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
Win10環(huán)境中如何實(shí)現(xiàn)python2和python3并存
這篇文章主要介紹了Win10環(huán)境中如何實(shí)現(xiàn)python2和python3并存,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
YOLOv5中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

