看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
您可以将包含类别 dtypes 的数据写入HDFStore, 也可以将数据写入Stata格式文件或从中读取数据。
写入CSV文件将转换数据,有效删除有关分类(分类和排序)的任何信息。 因此,如果您读回 CSV 文件,则必须将相关列转换回类别,并分配正确的类别和类别顺序。
import io
s = pd.Series(pd.Categorical(['a', 'b', 'b', 'a', 'a', 'd']))
# rename the categories
s.cat.categories = ["very good", "good", "bad"]
# reorder the categories and add missing categories
s = s.cat.set_categories(["very bad", "bad", "medium", "good", "very good"])
df = pd.DataFrame({"cats": s, "vals": [1, 2, 3, 4, 5, 6]})
csv = io.StringIO()
df.to_csv(csv)
df2 = pd.read_csv(io.StringIO(csv.getvalue()))
df2.dtypes
'''
Unnamed: 0 int64
cats object
vals int64
dtype: object
'''
df2["cats"]
'''
0 very good
1 good
2 good
3 very good
4 very good
5 bad
Name: cats, dtype: object
'''
# Redo the category
df2["cats"] = df2["cats"].astype("category")
df2["cats"].cat.set_categories(["very bad", "bad",
"medium", "good", "very good"],
inplace=True)
df2.dtypes
'''
Unnamed: 0 int64
cats category
vals int64
dtype: object
'''
df2["cats"]
'''
0 very good
1 good
2 good
3 very good
4 very good
5 bad
Name: cats, dtype: category
Categories (5, object): [very bad, bad, medium, good, very good]
'''
使用 to_sql 写入SQL数据库也是如此。
Pandas 主要使用值np.nan表示丢失的数据。 默认情况下,它不包括在计算中。
缺失值只能在值中,不能在类别中。可以理解的是,NaN 是不同的,并且总是可能的,使用分类代码时,缺失值将始终为-1。
s = pd.Series(["a", "b", np.nan, "a"], dtype="category")
# only two categories
s
'''
0 a
1 b
2 NaN
3 a
dtype: category
Categories (2, object): [a, b]
'''
s.cat.codes
'''
0 0
1 1
2 -1
3 0
dtype: int8
'''
处理缺失数据的方法,例如 isna(), fillna(), dropna() 都可以正常工作:
s = pd.Series(["a", "b", np.nan], dtype="category")
s
'''
0 a
1 b
2 NaN
dtype: category
Categories (2, object): [a, b]
'''
pd.isna(s)
'''
0 False
1 False
2 True
dtype: bool
'''
s.fillna("a")
'''
0 a
1 b
2 a
dtype: category
Categories (2, object): [a, b]
'''
更新时间:2020-06-25 13:42:38 标签:pandas 类别数据 IO