MySQL数据优化-多层索引

 更新时间:2022年01月24日 09:57:18   作者:小旺不正经  
这篇文章主要介绍了MySQL数据优化 多层索引,文章围绕MySQL数据优化 多层索引的相关资料展开详细的内容,具有一定的参考价值,需要的小伙伴可以参考一下

一、多层索引

1.创建

环境:Jupyter

import numpy as np
import pandas as pd
a=pd.DataFrame(np.random.random(size=(4,4)),index=[['上半年','上半年','下半年','下半年'],
                                                    ['一季度','二季度','三季度','四季度']],
              columns=[['蔬菜','蔬菜','肉类','肉类'],['胡萝卜','白菜','牛肉','猪肉']])
display(a)


2.设置索引的名称

import numpy as np
import pandas as pd
a=pd.DataFrame(np.random.random(size=(4,4)),index=[['上半年','上半年','下半年','下半年'],
                                                    ['一季度','二季度','三季度','四季度']],
              columns=[['蔬菜','蔬菜','肉类','肉类'],['胡萝卜','白菜','牛肉','猪肉']])
a.index.names=['年度','季度']
a.columns.names=['大类','小类']
display(a)


3.from_arrays( )-from_tuples()

import numpy as np
import pandas as pd
index=pd.MultiIndex.from_arrays([['上半年','上半年','下半年','下半年'],['一季度','二季度','三季度','四季度']])
columns=pd.MultiIndex.from_tuples([('蔬菜','胡萝卜'),('蔬菜','白菜'),('肉类','牛肉'),('肉类','猪肉')])
a=pd.DataFrame(np.random.random(size=(4,4)),index=index,columns=columns)
display(a)


4.笛卡儿积方式

from_product() 局限性较大

import pandas as pd
index = pd.MultiIndex.from_product([['上半年','下半年'],['蔬菜','肉类']])
a=pd.DataFrame(np.random.random(size=(4,4)),index=index)
display(a)


二、多层索引操作

1.Series

import pandas as pd
a=pd.Series([1,2,3,4],index=[['a','a','b','b'],['c','d','e','f']])
print(a)
print('---------------------')
print(a.loc['a'])
print('---------------------')
print(a.loc['a','c'])


import pandas as pd
a=pd.Series([1,2,3,4],index=[['a','a','b','b'],['c','d','e','f']])
print(a)
print('---------------------')
print(a.iloc[0])
print('---------------------')
print(a.loc['a':'b'])
print('---------------------')
print(a.iloc[0:2])


2.DataFrame

import numpy as np
import pandas as pd
a=pd.DataFrame(np.random.random(size=(4,4)),index=[['上半年','上半年','下半年','下半年'],
                                                    ['一季度','二季度','三季度','四季度']],
              columns=[['蔬菜','蔬菜','肉类','肉类'],['胡萝卜','白菜','牛肉','猪肉']])
print(a)
print('--------------------')
print(a.loc['上半年','二季度'])
print('--------------------')
print(a.iloc[0])


3.交换索引

swaplevel( )

import numpy as np
import pandas as pd
a=pd.DataFrame(np.random.random(size=(4,4)),index=[['2021','2021','2022','2022'],
                                                    ['一季度','二季度','三季度','四季度']],
              columns=[['蔬菜','蔬菜','肉类','肉类'],['胡萝卜','白菜','牛肉','猪肉']])
a.index.names=['年度','季度']
print(a)
print('--------------------')
print(a.swaplevel('年度','季度'))


4.索引排序

sort_index( )

  • level:指定根据哪一层进行排序,默认为最层
  • inplace:是否修改原数据。默认为False
import numpy as np
import pandas as pd
a=pd.DataFrame(np.random.random(size=(4,4)),index=[['2021','2021','2022','2022'],
                                                    [1,3,2,4]],
              columns=[['蔬菜','蔬菜','肉类','肉类'],['胡萝卜','白菜','牛肉','猪肉']])
a.index.names=['年度','季度']
print(a)
print('--------------------')
print(a.sort_index())
print('--------------------')
print(a.sort_index(level=1))


5.索引堆叠

stack( )

将指定层级的列转换成行

import numpy as np
import pandas as pd
a=pd.DataFrame(np.random.random(size=(4,4)),index=[['2021','2021','2022','2022'],
                                                    [1,3,2,4]],
              columns=[['蔬菜','蔬菜','肉类','肉类'],['胡萝卜','胡萝卜','牛肉','牛肉']])
print(a)
print('--------------------')
print(a.stack(0))
print('--------------------')
print(a.stack(-1))


6.取消堆叠

unstack( )

将指定层级的行转换成列

fill_value:指定填充值。

import numpy as np
import pandas as pd
a=pd.DataFrame(np.random.random(size=(4,4)),index=[['2021','2021','2022','2022'],
                                                    [1,3,2,4]],
              columns=[['蔬菜','蔬菜','肉类','肉类'],['胡萝卜','胡萝卜','牛肉','牛肉']])
print(a)
print('--------------------')
a=a.stack(0)
print(a)
print('--------------------')
print(a.unstack(-1))


import numpy as np
import pandas as pd
a=pd.DataFrame(np.random.random(size=(4,4)),index=[['2021','2021','2022','2022'],
                                                    [1,3,2,4]],
              columns=[['蔬菜','蔬菜','肉类','肉类'],['胡萝卜','胡萝卜','牛肉','牛肉']])
print(a)
print('--------------------')
a=a.stack(0)
print(a)
print('--------------------')
print(a.unstack(0,fill_value='0'))

到此这篇关于MySQL数据优化-多层索引的文章就介绍到这了,更多相关数据优化-多层索引内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL 数据类型和建库策略

    MySQL 数据类型和建库策略

    无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。
    2008-12-12
  • MySQL中UPDATE与DELETE语句的使用教程

    MySQL中UPDATE与DELETE语句的使用教程

    这篇文章主要介绍了MySQL中UPDATE与DELETE语句的使用教程,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-12-12
  • 在C#和MySQL中存取中文字符时避免乱码的方法

    在C#和MySQL中存取中文字符时避免乱码的方法

    这篇文章主要介绍了在C#和MySQL中存取中文字符时避免乱码的方法,主要还是老办法先转换成Unicode编码,需要的朋友可以参考下
    2015-05-05
  • Linux环境下设置MySQL表名忽略大小写的方法小结

    Linux环境下设置MySQL表名忽略大小写的方法小结

    在MySQL中,表名的大小写敏感性取决于操作系统和MySQL的配置,在Unix/Linux系统上,表名通常是区分大小写的,由于之前MySQL未设置忽略表名大小写导致数据查询失败等问题,所以本文给大家介绍了Linux环境下设置MySQL表名忽略大小写的方法,需要的朋友可以参考下
    2024-06-06
  • MySQL 8.0.29 安装配置方法图文教程

    MySQL 8.0.29 安装配置方法图文教程

    这篇文章主要为大家详细介绍了MySQL 8.0.29 安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Linux系统利用crontab定时备份Mysql数据库方法

    Linux系统利用crontab定时备份Mysql数据库方法

    本文教你如果快速利用系统crontab来定时执行备份文件,按日期对备份结果进行保存
    2021-09-09
  • 深入了解Mysql逻辑架构

    深入了解Mysql逻辑架构

    这篇文章主要介绍了深入了解Mysql逻辑架构的原因,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-12-12
  • 详解MySQL中ALTER命令的使用

    详解MySQL中ALTER命令的使用

    这篇文章主要介绍了详解MySQL中ALTER命令的使用,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • MySQL关于exists的一个bug

    MySQL关于exists的一个bug

    今天小编给大家分享一个mysql关于exists的一个bug问题,非常不错,感兴趣的朋友一起学习下
    2016-08-08
  • Mysql更换MyISAM存储引擎为Innodb的操作记录总结

    Mysql更换MyISAM存储引擎为Innodb的操作记录总结

    下面小编就为大家带来一篇Mysql更换MyISAM存储引擎为Innodb的操作记录总结。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论