Pandas小白入门原理解释(一)---将value_counts的结果转为DataFrame

文章目录

  • 序言
  • 代码示例
  • 工作原理讲解
    • 带名index 和 默认index
    • rename_axis
    • reset_index
  • rename_axis,set_index,reset_index对于DataFrame下的应用
  • 其他应用
    • quantile结果转为DataFrame

序言

本例讲了如何将value_counts结果转为dataFrame,本质是将Series转为DataFrame,学会后触类旁通。

学到的知识包括:

  • Series
  • index简介
  • rename_axis
  • reset_index
  • set_index

代码示例

value_counts的结果是一个series,其index为原来列的值,value为值的个数。要将其转为DataFrame需要两个函数rename_axisreset_index.
代码如下:

>>>> df = pd.DataFrame([[i,i*10] for i in range(10)], columns=['a', 'b'])
>>> df
	a	b
0	0	0
1	1	10
2	2	20
3	3	30
4	4	40
5	5	50
6	6	60
7	7	70
8	8	80
9	9	90
>>> df.b.value_counts().rename_axis("b").reset_index(name="counts")
	b	counts
0	0	1
1	10	1
2	20	1
3	30	1
4	40	1
5	50	1
6	60	1
7	70	1
8	80	1
9	90	1

工作原理讲解

Pandas小白入门原理解释(一)---将value_counts的结果转为DataFrame_第1张图片
问题变成,将series转为DataFrame,在这个过程中需要介绍下index类别和两个函数。

带名index 和 默认index

rename_axisreset_index对于SeriesDataFrame都可以用。现在讲一下在Series下的功能。
Pandas小白入门原理解释(一)---将value_counts的结果转为DataFrame_第2张图片

rename_axis

value_counts的结果是无名index,要给他一个名字,使用rename_axis即可。rename_axis给index改名字,不支持给value列改名字。对于DataFrame时候,支持对列改名字。如下:
Pandas小白入门原理解释(一)---将value_counts的结果转为DataFrame_第3张图片
rename_axis只有一个axis轴,所以参数axis值为0。在series下,rename_axis只有给index改名字的功能。

reset_index

reset_index对于series对象来说,将series转为dataframe,同时做三件事:

  1. index转为普通列
  2. 给新的dataFrame设置一个默认RangeIndex
  3. 给value列一个名字,这个名字用name参数传递。如下:
>>> s = pd.Series(["dog", "cat", "monkey"])
>>> s.rename_axis("key").reset_index('key', name="animal")
	key	animal
0	0	dog
1	1	cat
2	2	monkey

rename_axis,set_index,reset_index对于DataFrame下的应用

set_index是给DataFrame指定某一列作为index,并抛弃掉原来的index。
如下:
Pandas小白入门原理解释(一)---将value_counts的结果转为DataFrame_第4张图片
Pandas小白入门原理解释(一)---将value_counts的结果转为DataFrame_第5张图片

reset_index是将DataFrame的index重置为普通列,并设置一个默认index。如下:
Pandas小白入门原理解释(一)---将value_counts的结果转为DataFrame_第6张图片
Pandas小白入门原理解释(一)---将value_counts的结果转为DataFrame_第7张图片

其他应用

quantile结果转为DataFrame

>>> df = pd.DataFrame([[i,i*10] for i in range(10)], columns=['a', 'b'])
>>> df.a.quantile([i/4 for i in range(5)]).rename_axis("a_decile").reset_index(name='value_pointer')
	a_decile	value_pointer
0	0.00	0.00
1	0.25	2.25
2	0.50	4.50
3	0.75	6.75
4	1.00	9.00

你可能感兴趣的:(数据预处理,pandas,python,数据分析)