深入浅出:在Pandas中高效管理分类数据
https://dis.qidao123.com/imgproxy/aHR0cHM6Ly9pLWJsb2cuY3NkbmltZy5jbi9kaXJlY3QvMzQ0MDVkN2NhYzUwNDRmNDk1MjMyZDJjYzFiZDkzMTkucG5n预备工作
在开始之前,我们需要安装Pandas和Numpy两个包。你可以利用以下代码举行安装:
pip install pandas numpy
安装好这些包后,让我们正式进入本文的重要内容。
在Pandas中管理分类数据
分类数据(Categorical Data)是Pandas中的一种数据范例,用于表示特定(固定)数目的种别或差别的取值。它与Pandas中的字符串(string)或对象(object)数据范例差别,尤其是在数据的存储方式上。
分类数据具有更高的内存利用率,因为分类数据中的取值只会被存储一次。相比之下,对象范例会将每个取值都作为单独的字符串存储,这会斲丧更多的内存。
让我们通过一个示例来实践分类数据。下面展示了怎样在Pandas中初始化分类数据:
import pandas as pd
df = pd.DataFrame({
'fruits': pd.Categorical(['apple', 'kiwi', 'watermelon', 'kiwi', 'apple', 'kiwi']),
'size': pd.Categorical(['small', 'large', 'large', 'small', 'large', 'small'])
})
df.info()
输出结果:
RangeIndex: 6 entries, 0 to 5
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 fruits 6 non-null category
1 size 6 non-null category
dtypes: category(2)
memory usage: 396.0 bytes
你可以看到,fruits和size两列的数据范例是category,而不是我们通常见到的object范例。
我们可以通过以下代码,对比分类数据范例和对象数据范例的内存占用情况:
import numpy as np
n = 100000
df_object = pd.DataFrame({
'fruit': np.random.choice(['apple', 'banana', 'orange'], size=n)
})
print('对象类型的内存占用:')
print(df_object['fruit'].memory_usage(deep=True))
df_category = pd.DataFrame({
'fruit': pd.Categorical(np.random.choice(['apple', 'banana', 'orange'], size=n))
})
print('分类类型的内存占用:')
print(df_category['fruit'].memory_usage(deep=True))
输出结果:
对象类型的内存占用:
6267209
分类类型的内存占用:
100424
可以看到,随着样本数目的增长,对象范例的数据内存斲丧宏大于分类数据范例。
接下来,我们来看分类数据范例可以利用的独特方法。比如,你可以获取全部种别:
df['fruits'].cat.categories
输出:
Index(['apple', 'kiwi', 'watermelon'], dtype='object')
我们还可以重定名这些种别:
df['fruits'] = df['fruits'].cat.rename_categories(['fruit_apple', 'fruit_banana', 'fruit_orange'])print(
df['fruits'].cat.categories
)输出:
Index(['fruit_apple', 'fruit_banana', 'fruit_orange'], dtype='object')
分类数据范例还支持引入有序值(ordinal values),并可以对种别举行比力。
df['size'] = pd.Categorical(df['size'], categories=['small', 'medium', 'large'], ordered=True)
df['size'] < 'large'
输出:
0 True
1 False
2 False
3 True
4 False
5 True
Name: size, dtype: bool
掌握分类数据范例,将为你的数据分析带来极大的上风。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]