欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明

Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明

熱門(mén)標(biāo)簽:400電話(huà)申請(qǐng)資格 螳螂科技外呼系統(tǒng)怎么用 舉辦過(guò)冬奧會(huì)的城市地圖標(biāo)注 地圖地圖標(biāo)注有嘆號(hào) 正安縣地圖標(biāo)注app 阿里電話(huà)機(jī)器人對(duì)話(huà) qt百度地圖標(biāo)注 電銷(xiāo)機(jī)器人系統(tǒng)廠(chǎng)家鄭州 遼寧智能外呼系統(tǒng)需要多少錢(qián)

摘要

前面給大家分享了pandas做數(shù)據(jù)合并的兩篇[pandas.merge]和[pandas.cancat]的用法。今天這篇主要講的是pandas的DataFrame的軸旋轉(zhuǎn)操作,stack和unstack的用法。

首先,要知道以下五點(diǎn):

1.stack:將數(shù)據(jù)的列“旋轉(zhuǎn)”為行

2.unstack:將數(shù)據(jù)的行“旋轉(zhuǎn)”為列

3.stack和unstack默認(rèn)操作為最內(nèi)層

4.stack和unstack默認(rèn)旋轉(zhuǎn)軸的級(jí)別將會(huì)成果結(jié)果中的最低級(jí)別(最內(nèi)層)

5.stack和unstack為一組逆運(yùn)算操作

第一點(diǎn)和第二點(diǎn)以及第五點(diǎn)比較好懂,可能乍看第三點(diǎn)和第四點(diǎn)會(huì)不太理解,沒(méi)關(guān)系,看看具體下面的例子,你就懂了。

1、創(chuàng)建DataFrame,行索引名為state,列索引名為number

import pandas as pd
import numpy as np
data = pd.DataFrame(np.arange(6).reshape((2,3)),index=pd.Index(['Ohio','Colorado'],name='state')
     ,columns=pd.Index(['one','two','three'],name='number'))
data

2、將DataFrame的列旋轉(zhuǎn)為行,即stack操作

result = data.stack()
result

從下圖中結(jié)果來(lái)理解上述點(diǎn)4,stack操作后將列索引number旋轉(zhuǎn)為行索引,并且置于行索引的最內(nèi)層(外層為索引state),也就是將旋轉(zhuǎn)軸(number)的結(jié)果置于 最低級(jí)別。

3、將DataFrame的行旋轉(zhuǎn)為列,即unstack操作

result.unstack()

從下面結(jié)果理解上述點(diǎn)3,unstack操作默認(rèn)將內(nèi)層索引number旋轉(zhuǎn)為列索引。

同時(shí),也可以指定分層級(jí)別或者索引名稱(chēng)來(lái)指定操作級(jí)別,下面做錯(cuò)同樣會(huì)得到上面的結(jié)果。

4、stack和unstack逆運(yùn)算

s1 = pd.Series([0,1,2,3],index=list('abcd'))
s2 = pd.Series([4,5,6],index=list('cde'))
data2 = pd.concat([s1,s2],keys=['one','two'])
data2

data2.unstack().stack()

補(bǔ)充:使用Pivot、Pivot_Table、Stack和Unstack等方法在Pandas中對(duì)數(shù)據(jù)變形(重塑)

Pandas是著名的Python數(shù)據(jù)分析包,這使它更容易讀取和轉(zhuǎn)換數(shù)據(jù)。在Pandas中數(shù)據(jù)變形意味著轉(zhuǎn)換表或向量(即DataFrame或Series)的結(jié)構(gòu),使其進(jìn)一步適合做其他分析。在本文中,小編將舉例說(shuō)明最常見(jiàn)的一些Pandas重塑功能。

一、Pivot

pivot函數(shù)用于從給定的表中創(chuàng)建出新的派生表,pivot有三個(gè)參數(shù):索引、列和值。具體如下:

def pivot_simple(index, columns, values):
  """
  Produce 'pivot' table based on 3 columns of this DataFrame.
  Uses unique values from index / columns and fills with values.
  Parameters
  ----------
  index : ndarray
    Labels to use to make new frame's index
  columns : ndarray
    Labels to use to make new frame's columns
  values : ndarray
    Values to use for populating new frame's values

作為這些參數(shù)的值需要事先在原始的表中指定好對(duì)應(yīng)的列名。然后,pivot函數(shù)將創(chuàng)建一個(gè)新表,其行和列索引是相應(yīng)參數(shù)的唯一值。我們一起來(lái)看一下下面這個(gè)例子:

假設(shè)我們有以下數(shù)據(jù):

我們將數(shù)據(jù)讀取進(jìn)來(lái):

from collections import OrderedDict
from pandas import DataFrame
import pandas as pd
import numpy as np
 
data = OrderedDict((
  ("item", ['Item1', 'Item1', 'Item2', 'Item2']),
  ('color', ['red', 'blue', 'red', 'black']),
  ('user', ['1', '2', '3', '4']),
  ('bm',  ['1', '2', '3', '4'])
))
data = DataFrame(data)
print(data)

得到結(jié)果為:

  item color user bm
0 Item1  red  1 1
1 Item1  blue  2 2
2 Item2  red  3 3
3 Item2 black  4 4

接下來(lái),我們對(duì)以上數(shù)據(jù)進(jìn)行變形:

df = data.pivot(index='item', columns='color', values='user')
print(df)

得到的結(jié)果為:

color black blue red
item         
Item1 None   2  1
Item2   4 None  3

注意:可以使用以下方法對(duì)原始數(shù)據(jù)和轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行等效查詢(xún):

# 原始數(shù)據(jù)集
print(data[(data.item=='Item1')  (data.color=='red')].user.values)
 
# 變換后的數(shù)據(jù)集
print(df[df.index=='Item1'].red.values)

結(jié)果為:

['1']
['1']

在以上的示例中,轉(zhuǎn)化后的數(shù)據(jù)不包含bm的信息,它僅包含我們?cè)趐ivot方法中指定列的信息。下面我們對(duì)上面的例子進(jìn)行擴(kuò)展,使其在包含user信息的同時(shí)也包含bm信息。

df2 = data.pivot(index='item', columns='color')
print(df2)

結(jié)果為:

    user       bm     
color black blue red black blue red
item                 
Item1 None   2  1 None   2  1
Item2   4 None  3   4 None  3

從結(jié)果中我們可以看出:Pandas為新表創(chuàng)建了分層列索引。我們可以用這些分層列索引來(lái)過(guò)濾出單個(gè)列的值,例如:使用df2.user可以得到user列中的值。

二、Pivot Table

有如下例子:

data = OrderedDict((
  ("item", ['Item1', 'Item1', 'Item1', 'Item2']),
  ('color', ['red', 'blue', 'red', 'black']),
  ('user', ['1', '2', '3', '4']),
  ('bm',  ['1', '2', '3', '4'])
))
data = DataFrame(data) 
df = data.pivot(index='item', columns='color', values='user')

得到的結(jié)果為:

ValueError: Index contains duplicate entries, cannot reshape

因此,在調(diào)用pivot函數(shù)之前,我們必須確保我們指定的列和行沒(méi)有重復(fù)的數(shù)據(jù)。如果我們無(wú)法確保這一點(diǎn),我們可以使用pivot_table這個(gè)方法。

pivot_table方法實(shí)現(xiàn)了類(lèi)似pivot方法的功能,它可以在指定的列和行有重復(fù)的情況下使用,我們可以使用均值、中值或其他的聚合函數(shù)來(lái)計(jì)算重復(fù)條目中的單個(gè)值。

首先,我們先來(lái)看一下pivot_table()這個(gè)方法:

def pivot_table(data, values=None, index=None, columns=None, aggfunc='mean',
        fill_value=None, margins=False, dropna=True,
        margins_name='All'):
  """
  Create a spreadsheet-style pivot table as a DataFrame. The levels in the
  pivot table will be stored in MultiIndex objects (hierarchical indexes) on
  the index and columns of the result DataFrame
  Parameters
  ----------
  data : DataFrame
  values : column to aggregate, optional
  index : column, Grouper, array, or list of the previous
    If an array is passed, it must be the same length as the data. The list
    can contain any of the other types (except list).
    Keys to group by on the pivot table index. If an array is passed, it
    is being used as the same manner as column values.
  columns : column, Grouper, array, or list of the previous
    If an array is passed, it must be the same length as the data. The list
    can contain any of the other types (except list).
    Keys to group by on the pivot table column. If an array is passed, it
    is being used as the same manner as column values.
  aggfunc : function or list of functions, default numpy.mean
    If list of functions passed, the resulting pivot table will have
    hierarchical columns whose top level are the function names (inferred
    from the function objects themselves)
  fill_value : scalar, default None
    Value to replace missing values with
  margins : boolean, default False
    Add all row / columns (e.g. for subtotal / grand totals)
  dropna : boolean, default True
    Do not include columns whose entries are all NaN
  margins_name : string, default 'All'
    Name of the row / column that will contain the totals
    when margins is True.
    接下來(lái)我們來(lái)看一個(gè)示例:
data = OrderedDict((
  ("item", ['Item1', 'Item1', 'Item1', 'Item2']),
  ('color', ['red', 'blue', 'red', 'black']),
  ('user', ['1', '2', '3', '4']),
  ('bm',  ['1', '2', '3', '4'])
))
data = DataFrame(data)
 
df = data.pivot_table(index='item', columns='color', values='user', aggfunc=np.min)
print(df)

結(jié)果為:

color black blue  red
item          
Item1 None   2   1
Item2   4 None None

實(shí)際上,pivot_table()是pivot()的泛化,它允許在數(shù)據(jù)集中聚合具有相同目標(biāo)的多個(gè)值。

三、Stack/Unstack

事實(shí)上,變換一個(gè)表只是堆疊DataFrame的一種特殊情況,假設(shè)我們有一個(gè)在行列上有多個(gè)索引的DataFrame。堆疊DataFrame意味著移動(dòng)最里面的列索引成為最里面的行索引,反向操作稱(chēng)之為取消堆疊,意味著將最里面的行索引移動(dòng)為最里面的列索引。例如:

from pandas import DataFrame
import pandas as pd
import numpy as np
 
# 建立多個(gè)行索引
row_idx_arr = list(zip(['r0', 'r0'], ['r-00', 'r-01']))
row_idx = pd.MultiIndex.from_tuples(row_idx_arr)
 
# 建立多個(gè)列索引
col_idx_arr = list(zip(['c0', 'c0', 'c1'], ['c-00', 'c-01', 'c-10']))
col_idx = pd.MultiIndex.from_tuples(col_idx_arr)
 
# 創(chuàng)建DataFrame
d = DataFrame(np.arange(6).reshape(2,3), index=row_idx, columns=col_idx)
d = d.applymap(lambda x: (x // 3, x % 3))
 
# Stack/Unstack
s = d.stack()
u = d.unstack()
print(s)
print(u)

得到的結(jié)果為:

         c0   c1
r0 r-00 c-00 (0, 0)   NaN
    c-01 (0, 1)   NaN
    c-10   NaN (0, 2)
  r-01 c-00 (1, 0)   NaN
    c-01 (1, 1)   NaN
    c-10   NaN (1, 2)
 
    c0               c1    
   c-00      c-01      c-10    
   r-00  r-01  r-00  r-01  r-00  r-01
r0 (0, 0) (1, 0) (0, 1) (1, 1) (0, 2) (1, 2)

實(shí)際上,Pandas允許我們?cè)谒饕娜魏渭?jí)別上堆疊/取消堆疊。 因此,在前面的示例中,我們也可以堆疊在最外層的索引級(jí)別上。 但是,默認(rèn)(最典型的情況)是在最里面的索引級(jí)別進(jìn)行堆疊/取消堆疊。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Python Pandas知識(shí)點(diǎn)之缺失值處理詳解
  • Python基礎(chǔ)之教你怎么在M1系統(tǒng)上使用pandas
  • Python基礎(chǔ)之pandas數(shù)據(jù)合并
  • python-pandas創(chuàng)建Series數(shù)據(jù)類(lèi)型的操作
  • Python數(shù)據(jù)分析之pandas函數(shù)詳解
  • python基于Pandas讀寫(xiě)MySQL數(shù)據(jù)庫(kù)
  • python pandas合并Sheet,處理列亂序和出現(xiàn)Unnamed列的解決
  • python 使用pandas同時(shí)對(duì)多列進(jìn)行賦值
  • python之 matplotlib和pandas繪圖教程
  • Python3 pandas.concat的用法說(shuō)明
  • python pandas模糊匹配 讀取Excel后 獲取指定指標(biāo)的操作
  • 聊聊Python pandas 中l(wèi)oc函數(shù)的使用,及跟iloc的區(qū)別說(shuō)明
  • python讀寫(xiě)數(shù)據(jù)讀寫(xiě)csv文件(pandas用法)
  • Python Pandas list列表數(shù)據(jù)列拆分成多行的方法實(shí)現(xiàn)
  • python繪圖pyecharts+pandas的使用詳解
  • Python機(jī)器學(xué)習(xí)三大件之二pandas

標(biāo)簽:昭通 濟(jì)源 興安盟 淘寶好評(píng)回訪(fǎng) 阜新 合肥 信陽(yáng) 隨州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明》,本文關(guān)鍵詞  Python,pandas,軸,旋轉(zhuǎn),stack,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Python pandas軸旋轉(zhuǎn)stack和unstack的使用說(shuō)明的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美一区二区网站| 亚洲成人激情av| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲欧美精品aaaaaa片| 久久影院电视剧免费观看| 免费观看30秒视频久久| 三叶草欧洲码在线| 日韩欧美中文一区| 美国一区二区三区在线播放| 亚洲蜜桃精久久久久久久久久久久| 欧美欧美午夜aⅴ在线观看| 亚洲一区二区三区免费视频| 亚洲最大视频网| 欧美精品一级二级三级| 天天av天天翘天天综合网色鬼国产| 北京富婆泄欲对白| 欧美军同video69gay| 亚洲福利一二三区| 屁屁影院国产第一页| 日韩欧美国产系列| 精品亚洲成a人| 91禁男男在线观看| 国产精品理伦片| 99re成人在线| 欧美精品久久天天躁| 免费在线一区观看| 成年人视频软件| 一区二区中文字幕在线| 91网站最新地址| 51精品国自产在线| 久久精品国产久精国产| 人妻互换一区二区激情偷拍| 国产精品色噜噜| 欧美性猛交乱大交| 欧美一区二区成人| 国产精品主播直播| 在线区一区二视频| 日韩综合小视频| 久久久久久久久福利| 综合中文字幕亚洲| 国产人妻精品午夜福利免费| 日韩欧美一区二区久久婷婷| 国产一区二区视频在线播放| 色哟哟一区二区| 五月婷婷激情综合网| 欧美老女人性生活视频| 亚洲免费在线看| 中文成人无字幕乱码精品区| 久久久不卡网国产精品一区| fc2成人免费人成在线观看播放| 欧美日韩国产中文| 精品一区二区三区在线视频| 91杏吧porn蝌蚪| 天使萌一区二区三区免费观看| 九九热免费在线| 亚洲精品久久久蜜桃| 性欧美成人播放77777| 欧美国产成人精品| 男人添女人荫蒂国产| 久久综合狠狠综合久久激情| thepron国产精品| 日韩欧美中文字幕一区| 成人av网址在线| 日韩欧美一级片| 成人免费视频caoporn| 日韩一二三区不卡| www.亚洲激情.com| 日韩精品最新网址| 91影院在线免费观看| 久久综合久久久久88| 超级砰砰砰97免费观看最新一期 | 国产精品色哟哟网站| 日韩无码精品一区二区| 日本一区二区电影| 黄色a一级视频| 伊人开心综合网| 国产精品综合激情| 午夜精品影院在线观看| 黄色香蕉视频在线观看| 日本麻豆一区二区三区视频| 日本高清不卡aⅴ免费网站| 狠狠网亚洲精品| 6080午夜不卡| 99久久精品免费观看| 久久久久青草大香线综合精品| 特级特黄刘亦菲aaa级| 国产精品不卡视频| 亚洲一级片在线播放| 天堂影院一区二区| 欧美亚洲动漫另类| 国产suv精品一区二区883| 精品国产乱码久久久久久1区2区| 欧美性猛交xx| ●精品国产综合乱码久久久久| 日本欧美一区二区三区不卡视频| 日韩精品视频网| 欧美日本一道本| 91在线小视频| 国产精品成人免费在线| 国产三级在线观看完整版| 奇米精品一区二区三区在线观看一| 欧美色老头old∨ideo| 成人av免费网站| 日本一区免费视频| 国产美女永久免费无遮挡| 日韩av电影免费观看高清完整版 | 久久综合成人精品亚洲另类欧美| 国产精品久久久久久亚洲色 | 少妇极品熟妇人妻无码| 亚洲视频一区在线| www深夜成人a√在线| 国产精品99久久久久久久vr| 26uuu另类欧美亚洲曰本| v天堂中文在线| 亚洲不卡在线观看| 欧美日韩一区国产| 成人三级做爰av| 一区二区三区欧美久久| 色av综合在线| 91香蕉视频黄| 一区二区日韩av| 欧美三级乱人伦电影| 91视频观看视频| 亚洲色图视频免费播放| 高h视频免费观看| www.欧美日韩| 一区二区三区产品免费精品久久75| 在线影院国内精品| 亚洲精品一区二区18漫画| 亚洲最大成人综合| 欧美精品v日韩精品v韩国精品v| 免费看91视频| 天天免费综合色| 精品入口麻豆88视频| 亚洲永久精品ww.7491进入| 毛片一区二区三区| 久久先锋影音av| 娇小11一12╳yⅹ╳毛片| 国产成人h网站| 日韩理论电影院| 欧美日韩精品一区二区三区| 久草视频福利在线| 日本不卡视频在线观看| 精品av久久707| 刘亦菲国产毛片bd| 不卡av免费在线观看| 一区二区三区视频在线看| 欧美精品少妇一区二区三区| 日本一级片在线播放| 乱中年女人伦av一区二区| 久久亚洲欧美国产精品乐播| 午夜精品一区二区三级视频| www.视频一区| 五月婷婷久久丁香| 久久美女艺术照精彩视频福利播放| 欧美视频一区二区在线| 99视频一区二区| 五月综合激情网| 久久久综合精品| 一区二区成人免费视频| 美女被爆操网站| 欧美aaaaa成人免费观看视频| 国产三区在线成人av| 色婷婷国产精品| 欧美 变态 另类 人妖| 国产毛片精品视频| 亚洲欧美日韩人成在线播放| 欧美久久一区二区| 国产精品美女高潮无套| 成年人国产精品| 天堂资源在线中文精品| 日本一区二区不卡视频| 欧美美女直播网站| 全黄一级裸体片| www.色精品| 日本怡春院一区二区| 中文字幕av资源一区| 欧美日韩在线一区二区| 一级黄色录像毛片| 四川一级毛毛片| 久久精品国产77777蜜臀| 自拍偷拍欧美激情| 日韩亚洲欧美高清| 国产极品国产极品| 在线免费观看a级片| 风间由美一区二区av101| 亚洲成av人片一区二区梦乃| 日本一区二区不卡视频| 91精品国产免费| 一级黄色录像视频| 国产精品1000部啪视频| 成人av电影在线播放| 看片的网站亚洲| 亚洲一二三专区| 国产欧美精品一区aⅴ影院| 欧美高清性hdvideosex| 麻豆精品国产免费| 亚洲激情视频小说| 色综合久久久无码中文字幕波多| 国产最新精品精品你懂的|