概述
文章目录
- pandas层次化索引
- 1. 创建多层行索引
- 1) 隐式构造
- 2 显示构造pd.MultiIndex
- 3. 多层索引对象的索引与切片操作
- DataFrame的操作
- 4. 索引的堆(stack)
- 5. 聚合操作
pandas层次化索引
import pandas as pd
import numpy as np
1. 创建多层行索引
1) 隐式构造
最常见的方法是给DataFrame构造函数的index参数传递两个或更多的数组
- Series也可以创建多层索引
s = pd.Series(np.random.randint(0,100,4),index=[['甲','甲','乙','乙'],['黑','白','黑','白']])
s
s['甲','黑']
2 显示构造pd.MultiIndex
-
使用product
最简单,推荐使用
data = pd.DataFrame(data=np.random.randint(0,100,(4,4)),
index=pd.MultiIndex.from_product([['黑','白'],['甲','乙']]),
columns=pd.MultiIndex.from_product([['东','西'],['南','北']]))
3. 多层索引对象的索引与切片操作
DataFrame的操作
(1) 可以直接使用列名称来进行列索引
(2) 使用行索引需要用ix(),loc()等函数
【极其重要】推荐使用loc()函数
注意在对行索引的时候,若一级行索引还有多个,对二级行索引会遇到问题!也就是说,无法直接对二级索引进行索引,必须让二级索引变成一级索引后才能对其进行索引!
分辨取出索引以后的值是dataframe还是series
data.to_csv('temp1.csv',encoding='gbk')
4. 索引的堆(stack)
stack()
把列索引转变为行索引unstack()
把行索引转变为列索引
data.stack(level=[0,1])
s
#Series转变为DataFrame 透视表
s.unstack()
【小技巧】使用stack()的时候,level等于哪一个,哪一个就消失,出现在行里。
【小技巧】使用unstack()的时候,level等于哪一个,哪一个就消失,出现在列里。
5. 聚合操作
【注意】
-
需要指定axis
-
【小技巧】和unstack()相反,聚合的时候,axis等于哪一个,哪一个就保留。
所谓的聚合操作:平均数,标准方差,最大值,最小值……
df = pd.DataFrame(np.random.randint(10,20,(5,3)),columns=['存款','年龄','身高'])
方差:
v
a
r
=
∑
i
=
1
n
(
i
t
e
m
i
−
m
e
a
n
)
2
n
var = frac{sum_{i=1}^n(item_i-mean)^2}{n}
var=n∑i=1n(itemi−mean)2
样本方差:
s
a
m
p
l
e
v
a
r
=
∑
i
=
1
n
(
i
t
e
m
i
−
m
e
a
n
)
2
n
−
1
sample_var = frac{sum_{i=1}^n(item_i-mean)^2}{n-1}
samplevar=n−1∑i=1n(itemi−mean)2
- i t e m i item_i itemi代表列中每一个元素
- mean代表列的均值
- n代表样本的数量(行数)
- ∑ sum ∑代表累加
- 方差中计算的波动是带有膨胀因子的
标准差:
s
t
d
=
∑
i
=
1
n
(
i
t
e
m
i
−
m
e
a
n
)
2
n
std = sqrt{frac{sum_{i=1}^n(item_i-mean)^2}{n}}
std=n∑i=1n(itemi−mean)2
样本标准差:
s
a
m
p
l
e
s
t
d
=
∑
i
=
1
n
(
i
t
e
m
i
−
m
e
a
n
)
2
n
−
1
sample_std = sqrt{frac{sum_{i=1}^n(item_i-mean)^2}{n-1}}
samplestd=n−1∑i=1n(itemi−mean)2
- i t e m i item_i itemi代表列中每一个元素
- mean代表列的均值
- n代表样本的数量(行数)
- ∑ sum ∑代表累加
- 标准差在方差的基础上开根了
#方差
mean = df.mean()
((df - mean)**2).sum() / (df.shape[0]-1)
#numpy中的var是方差
np.var(df)
#pandas中的var是样本方差
df.var()
#标准差
mean = df.mean()
(((df - mean)**2).sum() / (df.shape[0]-1))**.5
#标准差
np.std(df)
#样本标准差
df.std()
最后
以上就是孝顺高跟鞋为你收集整理的【数据挖掘重要笔记day14】pandas层次化索引+创建多层行索引+显示构造pd.MultiIndex+多层索引对象的索引与切片操作+索引的堆(stack)+DataFrame的聚合操作pandas层次化索引的全部内容,希望文章能够帮你解决【数据挖掘重要笔记day14】pandas层次化索引+创建多层行索引+显示构造pd.MultiIndex+多层索引对象的索引与切片操作+索引的堆(stack)+DataFrame的聚合操作pandas层次化索引所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复