使用Pandas的字典系列

ff29svar  于 2023-02-02  发布在  其他
关注(0)|答案(2)|浏览(179)

使用Pandas从字典创建系列

data_dict={'Ahmed':90,'Ali':85,'Omar':80}
series=pd.Series(data_dict,index=['Ahmed','Ali','Omar'])
print("Series :",series)
series2=pd.Series(data_dict,index=['Ahmed','Ali','Omar','Karthi'])
print("Series 2 :",series2)

我尝试了这个代码,而练习Pandas,我收到的输出如下:

Series :
Ahmed    90
Ali      85
Omar     80
dtype: int64

Series 2 :
Ahmed     90.0
Ali       85.0
Omar      80.0
Karthi     NaN
dtype: float64

问:为什么在系列2中数据类型从int改为float?
我只是想知道如果我在索引中添加一个不属于字典的额外字段,输出会是什么。我得到了NaN,但是数据类型从int改为float。

ffscu2ro

ffscu2ro1#

当向pandas.Series提供字典时,键用作索引,值用作数据。
实际上,您只需要:

series = pd.Series(data_dict)

print(series)
Ahmed    90
Ali      85
Omar     80
dtype: int64

如果您使用列表作为数据源,则index非常有用:

series = pd.Series([90, 85, 80], index=['Ahmed','Ali','Omar'])

print(series)
Ahmed    90
Ali      85
Omar     80
dtype: int64

当您同时提供这两个选项时,它将充当reindex

series = pd.Series(data_dict, index=['Ahmed','Ali','Omar','Karthi'])

# equivalent to
series = pd.Series(data_dict).reindex(['Ahmed','Ali','Omar','Karthi'])

print(series)
Ahmed     90.0
Ali       85.0
Omar      80.0
Karthi     NaN
dtype: float64

在这种情况下,缺失的索引将使用NaN作为默认值填充,这将强制使用float64类型。
您可以使用支持integer NAInt64 dtype来防止更改:

series = pd.Series(data_dict, index=['Ahmed','Ali','Omar','Karthi'], dtype='Int64')
print(series)

输出:

Ahmed       90
Ali         85
Omar        80
Karthi    <NA>
dtype: Int64
p4rjhz4m

p4rjhz4m2#

NaNconsidered a special floating point value(IEE 754)。series2中没有Karthi的值,因此它会自动填充为NaN。尝试将其中一个整数转换为np.NaN,您将看到相同的行为。包含浮点的序列将自动转换为浮点。

import pandas as pd
import numpy as np

data_dict = {'Ahmed':90, 'Ali':85, 'Omar':np.NaN} 

series = pd.Series(data_dict, index=['Ahmed','Ali','Omar'])

输出:

Ahmed    90.0
Ali      85.0
Omar      NaN
dtype: float64

相关问题