高级pandas

1.take函数,根据索引值来生成相应的Series

values = Series([0,1,0,0]*2)
dim = Series(['A','B'])
demo = dim.take(values)
print(demo)#将values中值作为索引,然后根据其来寻找dim中的值

0    A
1    B
0    A
0    A
0    A
1    B
0    A
0    A
dtype: object

2.pandas拥有特殊的Categorical类型,用于承载基于整数的类别展示或编码的数据。

1.astype:转换数据的类型
 print(demo.astype('category'))
0    A
1    B
0    A
0    A
0    A
1    B
0    A
0    A
dtype: category
Categories (2, object): [A, B]
    
    
2.Categorical对象拥有categories和codes属性:
print(demo.astype('category').values.categories)
Index(['A', 'B'], dtype='object')

print(demo.astype('category').values.codes)
[0 1 0 0 0 1 0 0]


3.利用Categorical直接生成
my_categories = pd.Categorical(['A','B','A','A'])
print(my_categories)
[A, B, A, A]
Categories (2, object): [A, B]
    

    
4.利用as_ordered()进行排序
print(my_categories.as_ordered())
[A, B, A, A]
Categories (2, object): [A < B]

    
    
5.通过.codes来访问代码,.categories来访问类别
print(my_categories.categories)
[0 1 0 0]


print(my_categories.categories)
Index(['A', 'B'], dtype='object')



6.通过set_categories方法来改变类别
demo=my_categories.set_categories(['A','B','C'])
print(demo)
[A, B, A, A]
Categories (3, object): [A, B, C]
    
print(demo.value_counts())
A    3
B    1
C    0
dtype: int64

3.高阶GroupBy应用:apply可以用于执行转换操作,内建方法transform也可以进行

猜你喜欢

转载自blog.csdn.net/qq_41458842/article/details/103127154
今日推荐