Python Pandas 中有哪些文本数据类型?
在 Python Pandas 中(从版本 1.0.0 到最新版本 1.2.4),有两种存储文本数据的方式。因此,Pandas 文本数据有两种数据类型:对象 (object) 和 StringDtype。
在旧版本的 Pandas(1.0)中,只有对象数据类型可用;在新版本的 Pandas 中,建议使用 StringDtype 存储所有文本数据。为了克服使用对象数据类型的一些缺点,Pandas 1.0 版本引入了 StringDtype。不过,我们仍然可以将对象和字符串数据类型用于文本数据。
我们来举个例子,使用文本数据创建一个 DataFrame,并查看 Pandas 文本数据中输出的默认数据类型。
对象数据类型
创建一个包含文本数据的 Pandas DataFrame,并验证数据的数据类型。
示例
dict_ = {'A':['a','Aa'],'B':['b','Bb']} # 声明一个字典
df = pd.DataFrame(dict_) # 使用字典
print(df['A']) # 打印 A 列的值
print() # 在每个输出之间添加空格
print(df['B']) # 打印 B 列的值
解释
在上面的代码中,我们创建了一个包含字符串数据的字典,并将其赋值给 dict_ 变量。通过这个 dict_,我们创建了一个 Pandas DataFrame。这个 DataFrame 有 2 列 2 行,其中的数据全部是字符串。
上面代码的最后三行显示了每一列数据,在输出中,我们可以看到数据的数据类型。下面我们来验证一下输出结果。
输出
0 a 1 Aa Name: A, dtype: object 0 b 1 Bb Name: B, dtype: object
上面的输出表示 DataFrame 中 A 列和 B 列的值,每列之间以空格分隔。这里我们可以看到默认表示对象的每列的数据类型。要定义 StringDtype,我们需要明确说明。
String dtype
要定义 String dtype,我们可以使用 dtype 参数并赋值一个字符串或 StringDtype 参数。下面我们来看一些例子。
示例
list_ = ['python','sample', 'string'] ds = pd.Series(list_, dtype='string') print(ds)
解释
这里我们用 pandas series 方法,通过一个字符串列表定义了一个 pandas Series。我们将字符串参数传递给 Parameter dtype,它会将默认的对象 dtype 更改为字符串。
输出
0 python 1 sample 2 string dtype: string
上述代码块是序列数据的输出,这里的数据类型是字符串。我们也可以使用 pd.StringDtype() 将数据类型定义为字符串。让我们再举一个例子。
示例
data = ['john','dev','philip'] # 创建列表 ds = pd.Series(data, dtype= pd.StringDtype()) # 创建序列 ds
在本例中,我们同样使用一个包含字符串列表的 Pandas 序列,并将 pd.StringDtype 参数定义为 dtype 参数。
输出
0 John 1 Dev 2 Philip dtype: string
上面的代码块显示了将 pd.StringDtype 参数定义为 dtype 参数的输出。

