python 數(shù)據(jù)分析實(shí)現(xiàn)長寬格式的轉(zhuǎn)換
我就廢話不多說了,大家還是直接看代碼吧!
# encoding=utf-8
import numpy as np
import pandas as pd
# 長寬格式的轉(zhuǎn)換
# 1
data = pd.read_csv('d:data/macrodata.csv')
print 'data:=\n', data
print 'data.to_records():=\n', data.to_records()
print 'data.year:=\n', data.year
print 'data.quarter:=\n', data.quarter
periods = pd.PeriodIndex(year=data.year, quarter=data.quarter, name='date')
print 'periods:=\n', periods
data = pd.DataFrame(data.to_records(),
columns=pd.Index(['realgdp', 'infl', 'unemp'], name='item'),
index=periods.to_timestamp('D', 'end'))
print 'data:=\n', data
ldata = data.stack().reset_index().rename(columns={0: 'value'})
# print 'ldata:=\n', ldata
print 'ldata.get(\'realgdp\'):=\n', ldata.get('realgdp')
print 'ldata.get(\'unemp\'):=\n', ldata.get('unemp')
wdata = ldata.pivot('date', 'item', 'value')
print 'ldata:=\n', ldata
print 'wdata:=\n', wdata
# 2
print 'ldata[:10]:=\n', ldata[:10]
pivoted = ldata.pivot('date', 'item', 'value')
print 'pivoted:=\n', pivoted
print 'pivoted.head():=\n', pivoted.head()
print 'ldata:=\n', ldata
ldata['value2'] = np.random.randn(len(ldata))
print 'ldata[\'value2\']:=\n', ldata['value2']
print 'ldata[:10]:=\n', ldata[:10]
pivoted = ldata.pivot('date', 'item')
print 'pivoted:=\n', pivoted
print pivoted[:5]
print 'pivoted[\'value\'][:5]:=\n', pivoted['value'][:5]
print 'ldata:=\n', ldata
unstacked = ldata.set_index(['date', 'item']).unstack('item')
print 'unstacked:=\n', unstacked
print 'test'
補(bǔ)充知識:python使用_pandas_用stack和unstack進(jìn)行行列重塑(key-value變寬表)
數(shù)據(jù)結(jié)構(gòu)的重塑(reshape)
與數(shù)據(jù)庫交互時(shí)常遇到堆疊格式(key-value)和寬表形式(dataframe)的轉(zhuǎn)換,如:
堆疊格式:

寬表形式dataframe:

下面是相互轉(zhuǎn)換的示例代碼:
import pandas as pd
import numpy as np
# 常用的表格形式的數(shù)據(jù)結(jié)構(gòu)
df = pd.DataFrame(np.arange(6).reshape((2,3)), index=['id1','id2'], columns=['attr1','attr2','attr3'])
print(df)
out:
attr1 attr2 attr3
id1 0 1 2
id2 3 4 5
# 寬表形式(dataframe)轉(zhuǎn)變?yōu)槎询B形式(key-value)形式
# 數(shù)據(jù)庫中常以該形式存儲
df_key_value = df.stack().reset_index()
df_key_value.columns = ['id', 'attr', 'value']
print(df_key_value)
out:
id attr value
0 id1 attr1 0
1 id1 attr2 1
2 id1 attr3 2
3 id2 attr1 3
4 id2 attr2 4
5 id2 attr3 5
# 堆疊轉(zhuǎn)換為寬表形式
# 用set_index創(chuàng)建層次化索引,在用unstack重塑
# unstack中作為旋轉(zhuǎn)軸的變量(如attr),其值會作為列變量展開
df_key_value.set_index(['id','attr']).unstack('attr')
out:
value
attr attr1 attr2 attr3
id
id1 0 1 2
id2 3 4 5
# 多層索引轉(zhuǎn)化為寬表
df_long = df_key_value.set_index(['id','attr']).unstack('attr')['value'].reset_index()
df_long
out:
attr id attr1 attr2 attr3
0 id1 0 1 2
1 id2 3 4 5
# 堆疊轉(zhuǎn)換為寬表的快捷鍵---pivot
df_key_value.pivot('id','attr','value')
out:
attr attr1 attr2 attr3
id
id1 0 1 2
id2 3 4 5
以上這篇python 數(shù)據(jù)分析實(shí)現(xiàn)長寬格式的轉(zhuǎn)換就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Python編寫可視化界面的全過程(Python+PyCharm+PyQt)
- Python實(shí)現(xiàn)K-means聚類算法并可視化生成動圖步驟詳解
- python數(shù)據(jù)分析之員工個人信息可視化
- python爬取各省降水量及可視化詳解
- 關(guān)于Python可視化Dash工具之plotly基本圖形示例詳解
- python用pyecharts實(shí)現(xiàn)地圖數(shù)據(jù)可視化
- Python繪制K線圖之可視化神器pyecharts的使用
- Python繪制詞云圖之可視化神器pyecharts的方法
- python 可視化庫PyG2Plot的使用
- Python數(shù)據(jù)分析之彩票的歷史數(shù)據(jù)
- Python 數(shù)據(jù)分析之逐塊讀取文本的實(shí)現(xiàn)
- Python數(shù)據(jù)分析庫pandas高級接口dt的使用詳解
- Python Pandas數(shù)據(jù)分析工具用法實(shí)例
- 用Python 爬取貓眼電影數(shù)據(jù)分析《無名之輩》
- 大數(shù)據(jù)分析用java還是Python
- PyCharm設(shè)置Ipython交互環(huán)境和宏快捷鍵進(jìn)行數(shù)據(jù)分析圖文詳解
- Python實(shí)戰(zhàn)之疫苗研發(fā)情況可視化
相關(guān)文章
gearman的安裝啟動及python API使用實(shí)例
這篇文章主要介紹了gearman的安裝啟動及python API使用,需要的朋友可以參考下2014-07-07
小議Python中自定義函數(shù)的可變參數(shù)的使用及注意點(diǎn)
Python函數(shù)的默認(rèn)值參數(shù)只會在函數(shù)定義處被解析一次,以后再使用時(shí)這個默認(rèn)值還是一樣,這在與可變參數(shù)共同使用時(shí)便會產(chǎn)生困惑,下面就來小議Python中自定義函數(shù)的可變參數(shù)的使用及注意點(diǎn)2016-06-06
SublimeText 2編譯python出錯的解決方法(The system cannot find the file
這篇文章主要介紹了SublimeText 2編譯python報(bào)The system cannot find the file specified錯誤的解決方法,大家參考使用吧2013-11-11
python獲取的html中都是\\u003e實(shí)現(xiàn)轉(zhuǎn)成正確字符
這篇文章主要介紹了python獲取的html中都是\\u003e實(shí)現(xiàn)轉(zhuǎn)成正確字符方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07
Python只用40行代碼編寫的計(jì)算器實(shí)例
這篇文章主要介紹了Python只用40行代碼編寫的計(jì)算器,結(jié)合完整實(shí)例形式分析了Python計(jì)算器的具體實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-05-05
flask框架使用orm連接數(shù)據(jù)庫的方法示例
這篇文章主要介紹了flask框架使用orm連接數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式分析了flask框架使用flask_sqlalchemy包進(jìn)行mysql數(shù)據(jù)庫連接操作的具體步驟與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-07-07

