我是靠谱客的博主 孝顺高跟鞋,最近开发中收集的这篇文章主要介绍【数据挖掘重要笔记day14】pandas层次化索引+创建多层行索引+显示构造pd.MultiIndex+多层索引对象的索引与切片操作+索引的堆(stack)+DataFrame的聚合操作pandas层次化索引,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • 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=ni=1n(itemimean)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=n1i=1n(itemimean)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=ni=1n(itemimean)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=n1i=1n(itemimean)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层次化索引所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部