日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

Pandas常用數(shù)據(jù)結(jié)構(gòu)

作者:Begin to change 更新時(shí)間: 2022-07-21 編程語言

一、Series類型

在Pandas中,有兩個(gè)基本的數(shù)據(jù)類型,使得在處理數(shù)據(jù)的時(shí)候變得非常高效,分別是Series和DataFrame,其中DataFrame是由多個(gè)Series組成的,因此要先學(xué)好Series,才能對DataFrame的使用更加得心應(yīng)手。

Series是一種類似于列表的對象,由一列數(shù)據(jù)以及一列與之對應(yīng)的索引組成。如下圖所示。
Series.png

1. 創(chuàng)建Series對象:

在實(shí)際開發(fā)中,可能需要經(jīng)常創(chuàng)建Series對象,而創(chuàng)建Series對象有多重方式,下面進(jìn)行講解。

1.1. 通過列表或ndarray數(shù)組創(chuàng)建:

import pandas as pd

persons = ['張三','李四','王五']
series = pd.Series(persons)

print(series)
print(type(series))

上述代碼可以看到輸出以上代碼輸出為:

0    張三
1    李四
2    王五
dtype: object

<class 'pandas.core.series.Series'>

1.2. 通過字典創(chuàng)建:

persons = {"張三":18, "李四": 25, "王五": 19}
series = pd.Series(persons)

print(series)
print(type(series))

上述代碼的輸出結(jié)果為:

張三    18
李四    25
王五    19
dtype: int64

<class 'pandas.core.series.Series'>

2. Series對象相關(guān)操作:

2.1. 獲取數(shù)據(jù)和索引:

通過series.indexseries.values能分別獲取到Series對象的索引和值。示例代碼如下:

persons = ['張三','李四','王五']
series = pd.Series(persons)

print(series.index)
print(series.values)

輸出結(jié)果為:

RangeIndex(start=0, stop=3, step=1)
['張三' '李四' '王五']

2.2. 通過索引獲取對應(yīng)的值:

我們經(jīng)常會(huì)通過索引來獲取對應(yīng)的值,語法為:series[索引]。示例代碼如下:

persons = ['張三','李四','王五']
series = pd.Series(persons)

print(series[0])

輸出結(jié)果為:'張三'

二、DataFrame對象:

DataFrame由多行多列組成,是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu)。可以認(rèn)為一個(gè)DataFrame是由多個(gè)Series對象組成,這些Series共用同一個(gè)行索引,每個(gè)Series的數(shù)據(jù)類型可以不同。結(jié)構(gòu)圖如下。
DataFrame.png

1. 創(chuàng)建DataFrame對象:

1.1. 通過ndarray創(chuàng)建DataFrame對象:

二維數(shù)組天然具有行和列的概念,因此可以非常方便的使用二維數(shù)組創(chuàng)建DataFrame對象。示例代碼如下:

import numpy as np

# 通過ndarray創(chuàng)建DataFrame
array = np.random.randn(5,4)
print(array)

df_obj = pd.DataFrame(array)
print(df_obj.head())

運(yùn)行結(jié)果如下:

[[ 1.70457214  0.53100369  0.37360947  0.93320688]
 [-0.56648031 -0.32116357 -0.3837961  -1.80175888]
 [ 2.12109864  0.83919019 -0.43187152  0.80611653]
 [-0.66275038  0.90984602  0.11596098  0.41519099]
 [-1.62119184  2.40474293  0.96915745 -0.28995527]]
          0         1         2         3
0  1.704572  0.531004  0.373609  0.933207
1 -0.566480 -0.321164 -0.383796 -1.801759
2  2.121099  0.839190 -0.431872  0.806117
3 -0.662750  0.909846  0.115961  0.415191
4 -1.621192  2.404743  0.969157 -0.289955

同理,用二維列表,也同樣可以達(dá)到效果。可以在創(chuàng)建DataFrame的時(shí)候,指定行索引和列索引。示例代碼如下:

df = pd.DataFrame(array, index=[1,2,3,4,5], columns=['星期一','星期二','星期三','星期四']

輸出結(jié)果如下:

     星期一     星期二     星期三    星期四
1  1.704572  0.531004  0.373609  0.933207
2 -0.566480 -0.321164 -0.383796 -1.801759
3  2.121099  0.839190 -0.431872  0.806117
4 -0.662750  0.909846  0.115961  0.415191
5 -1.621192  2.404743  0.969157 -0.289955

1.2. 通過字典創(chuàng)建DataFrame:

persons = [{"username":"張三","age": 18, "height": 180},{"username":"李四","age": 20, "height": 170}]
df = pd.DataFrame(persons)
print(df)

運(yùn)行結(jié)果如下:

    username	age	height
0	張三	18	180
1	李四	20	170

上述是把多個(gè)字典存放到列表中,也可以直接使用字典創(chuàng)建,示例代碼如下:

persons = {"username":["張三","李四"],"age": [18, 20], "height": [180, 170]}
df = pd.DataFrame(persons)
print(df)

2. DataFrame基本操作:

2.1. 獲取列的數(shù)據(jù):

通過df.列名或者df['列名']都可以獲取到該列的所有數(shù)據(jù)。示例代碼如下:

# 1. df.列名
print(df.username)
# 2. df['列名']
print(df['username'])

以上獲取到的數(shù)據(jù)類型,實(shí)際上就是一個(gè)Series對象。

2.2. 獲取行的數(shù)據(jù):

行的數(shù)據(jù)是通過索引來獲取,在DataFrame中索引操作功能非常強(qiáng)大,這里我們講解一個(gè)簡單的示例。關(guān)于索引更多操作讀者請參考下一節(jié)。

# 獲取下標(biāo)為0的索引的那一行的值
print(df.iloc[0])

輸出結(jié)果如下:

username     張三
age          18
height      180
Name: 0, dtype: object

2.3. 增加列的數(shù)據(jù):

可以通過類似字典操作的方式,給DataFrame添加新的列。示例代碼如下:

# 添加weight列
df['weight'] = [80, 60]
print(df)

輸出結(jié)果如下:

	username    age    height	weight
0	張三	18	180	80
1	李四	20	170	60

2.4. 刪除列:

通過del關(guān)鍵字即可刪除某一列的數(shù)據(jù)。示例代碼如下:

del df['weight']
print(df)

輸出結(jié)果如下:

    username	age	height
0	張三	18	180
1	李四	20	170

3. 查看數(shù)據(jù):

3.1. head

如果DataFrame數(shù)據(jù)行數(shù)特別多,我們只想看前面部分的數(shù)據(jù),那么可以使用df.head來查看。示例代碼如下:

# 默認(rèn)查看前面5條數(shù)據(jù)
df.head()

# 查看前面10條數(shù)據(jù)
df.head(10)

3.2. tail:

head相反,tail是用于查看DataFrame末尾的數(shù)據(jù),默認(rèn)是5條。示例代碼如下:

# 默認(rèn)查看末尾5調(diào)數(shù)據(jù)
df.tail()

# 查看末尾10條數(shù)據(jù)
df.tail(10)

3.3. describe:

查看DataFrame的描述。會(huì)把所有數(shù)字類型的列進(jìn)行運(yùn)算,比如獲取總的個(gè)數(shù),平均值,中位數(shù)等。

import pandas as pd
persons = [{"username":"張三","age": 18, "height": 180},{"username":"李四","age": 20, "height": 170}]
df = pd.DataFrame(persons)
df.describe()

輸出結(jié)果為:

        age	        height
count	2.000000	2.000000
mean	19.000000	175.000000
std	1.414214	7.071068
min	18.000000	170.000000
25%	18.500000	172.500000
50%	19.000000	175.000000
75%	19.500000	177.500000
max	20.000000	180.000000

3.4. shape:

查看當(dāng)前DataFrame的形狀。示例代碼如下:

df.shape

3.5. index和columns:

df.index用于查看當(dāng)前的行索引。df.columns用于查看當(dāng)前的列索引。示例代碼如下:

# 查看行索引
print(df.index)
# 查看列索引
print(df.columns)

3.6. T:

df.T用于轉(zhuǎn)置數(shù)組,可以將行變?yōu)榱校凶優(yōu)樾小J纠a如下:

print(df.T)

3.7. info:

查看數(shù)據(jù)相關(guān)信息,比如列數(shù)、每列的類型等。

3.8. dtypes:

查看DataFrame的所有列的數(shù)據(jù)類型。

原文鏈接:https://blog.csdn.net/qq_41404557/article/details/125898356

欄目分類
最近更新