MySQL數(shù)據(jù)優(yōu)化-多層索引
一、多層索引
1.創(chuàng)建
環(huán)境: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
:指定根據(jù)哪一層進行排序,默認為最層inplace
:是否修改原數(shù)據(jù)。默認為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( )
將指定層級的列轉(zhuǎn)換成行
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( )
將指定層級的行轉(zhuǎn)換成列
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'))
到此這篇關(guān)于MySQL數(shù)據(jù)優(yōu)化-多層索引的文章就介紹到這了,更多相關(guān)數(shù)據(jù)優(yōu)化-多層索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫服務器端核心參數(shù)詳解和推薦配置
MySQL手冊上也有服務器端參數(shù)的解釋,以及參數(shù)值的相關(guān)說明信息,現(xiàn)針對我們大家重點需要注意、需要修改或影響性能 的服務器端參數(shù),作其用處的解釋和如何配置參數(shù)值的推薦,此事情拖了不少時間,為方便大家?guī)兔m錯2011-12-12MySQL 外鍵約束和表關(guān)系相關(guān)總結(jié)
一個項目中如果將所有的數(shù)據(jù)都存放在一張表中是不合理的,比如一個員工信息,公司只有2個部門,但是員工有1億人,就意味著員工信息這張表中的部門字段的值需要重復存儲,極大的浪費資源,因此可以定義一個部門表和員工信息表進行關(guān)聯(lián),而關(guān)聯(lián)的方式就是外鍵。2021-06-06