婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python pandas軸旋轉stack和unstack的使用說明

Python pandas軸旋轉stack和unstack的使用說明

熱門標簽:400電話申請資格 螳螂科技外呼系統怎么用 舉辦過冬奧會的城市地圖標注 地圖地圖標注有嘆號 正安縣地圖標注app 阿里電話機器人對話 qt百度地圖標注 電銷機器人系統廠家鄭州 遼寧智能外呼系統需要多少錢

摘要

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

首先,要知道以下五點:

1.stack:將數據的列“旋轉”為行

2.unstack:將數據的行“旋轉”為列

3.stack和unstack默認操作為最內層

4.stack和unstack默認旋轉軸的級別將會成果結果中的最低級別(最內層)

5.stack和unstack為一組逆運算操作

第一點和第二點以及第五點比較好懂,可能乍看第三點和第四點會不太理解,沒關系,看看具體下面的例子,你就懂了。

1、創建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的列旋轉為行,即stack操作

result = data.stack()
result

從下圖中結果來理解上述點4,stack操作后將列索引number旋轉為行索引,并且置于行索引的最內層(外層為索引state),也就是將旋轉軸(number)的結果置于 最低級別。

3、將DataFrame的行旋轉為列,即unstack操作

result.unstack()

從下面結果理解上述點3,unstack操作默認將內層索引number旋轉為列索引。

同時,也可以指定分層級別或者索引名稱來指定操作級別,下面做錯同樣會得到上面的結果。

4、stack和unstack逆運算

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()

補充:使用Pivot、Pivot_Table、Stack和Unstack等方法在Pandas中對數據變形(重塑)

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

一、Pivot

pivot函數用于從給定的表中創建出新的派生表,pivot有三個參數:索引、列和值。具體如下:

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

作為這些參數的值需要事先在原始的表中指定好對應的列名。然后,pivot函數將創建一個新表,其行和列索引是相應參數的唯一值。我們一起來看一下下面這個例子:

假設我們有以下數據:

我們將數據讀取進來:

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)

得到結果為:

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

接下來,我們對以上數據進行變形:

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

得到的結果為:

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

注意:可以使用以下方法對原始數據和轉換后的數據進行等效查詢:

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

結果為:

['1']
['1']

在以上的示例中,轉化后的數據不包含bm的信息,它僅包含我們在pivot方法中指定列的信息。下面我們對上面的例子進行擴展,使其在包含user信息的同時也包含bm信息。

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

結果為:

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

從結果中我們可以看出:Pandas為新表創建了分層列索引。我們可以用這些分層列索引來過濾出單個列的值,例如:使用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')

得到的結果為:

ValueError: Index contains duplicate entries, cannot reshape

因此,在調用pivot函數之前,我們必須確保我們指定的列和行沒有重復的數據。如果我們無法確保這一點,我們可以使用pivot_table這個方法。

pivot_table方法實現了類似pivot方法的功能,它可以在指定的列和行有重復的情況下使用,我們可以使用均值、中值或其他的聚合函數來計算重復條目中的單個值。

首先,我們先來看一下pivot_table()這個方法:

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.
    接下來我們來看一個示例:
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)

結果為:

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

實際上,pivot_table()是pivot()的泛化,它允許在數據集中聚合具有相同目標的多個值。

三、Stack/Unstack

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

from pandas import DataFrame
import pandas as pd
import numpy as np
 
# 建立多個行索引
row_idx_arr = list(zip(['r0', 'r0'], ['r-00', 'r-01']))
row_idx = pd.MultiIndex.from_tuples(row_idx_arr)
 
# 建立多個列索引
col_idx_arr = list(zip(['c0', 'c0', 'c1'], ['c-00', 'c-01', 'c-10']))
col_idx = pd.MultiIndex.from_tuples(col_idx_arr)
 
# 創建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)

得到的結果為:

         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)

實際上,Pandas允許我們在索引的任何級別上堆疊/取消堆疊。 因此,在前面的示例中,我們也可以堆疊在最外層的索引級別上。 但是,默認(最典型的情況)是在最里面的索引級別進行堆疊/取消堆疊。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Python Pandas知識點之缺失值處理詳解
  • Python基礎之教你怎么在M1系統上使用pandas
  • Python基礎之pandas數據合并
  • python-pandas創建Series數據類型的操作
  • Python數據分析之pandas函數詳解
  • python基于Pandas讀寫MySQL數據庫
  • python pandas合并Sheet,處理列亂序和出現Unnamed列的解決
  • python 使用pandas同時對多列進行賦值
  • python之 matplotlib和pandas繪圖教程
  • Python3 pandas.concat的用法說明
  • python pandas模糊匹配 讀取Excel后 獲取指定指標的操作
  • 聊聊Python pandas 中loc函數的使用,及跟iloc的區別說明
  • python讀寫數據讀寫csv文件(pandas用法)
  • Python Pandas list列表數據列拆分成多行的方法實現
  • python繪圖pyecharts+pandas的使用詳解
  • Python機器學習三大件之二pandas

標簽:昭通 濟源 興安盟 淘寶好評回訪 阜新 合肥 信陽 隨州

巨人網絡通訊聲明:本文標題《Python pandas軸旋轉stack和unstack的使用說明》,本文關鍵詞  Python,pandas,軸,旋轉,stack,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python pandas軸旋轉stack和unstack的使用說明》相關的同類信息!
  • 本頁收集關于Python pandas軸旋轉stack和unstack的使用說明的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲 欧美综合在线网络| 国产三级一区二区| 日本一区二区电影| 亚洲男人的天堂一区二区| 欧美图片一区二区三区| 日韩av在线发布| 国产欧美精品区一区二区三区| 成人黄色综合网站| 精品在线你懂的| 亚瑟在线精品视频| 亚洲mv在线观看| 亚洲乱码精品一二三四区日韩在线| 国产乱码精品一区二区三区五月婷 | 91精品中文字幕一区二区三区| 艳妇臀荡乳欲伦亚洲一区| 欧美成va人片在线观看| 国内精品视频一区二区三区八戒| 日韩精品亚洲专区| 亚洲v中文字幕| 亚洲欧美激情一区二区| 国产亚洲一区二区在线观看| 欧美一区二区三区四区高清| 91免费视频观看| 国产精品一区二区在线观看不卡| 日本sm残虐另类| 亚洲激情五月婷婷| 91老师国产黑色丝袜在线| 国产精品12区| 亚洲欧美另类在线| 亚洲欧美色图小说| 亚洲美女视频在线| 久久av老司机精品网站导航| a级高清视频欧美日韩| 欧美久久久久久久久| 亚洲国产高清在线| 性做久久久久久免费观看| 亚洲电影激情视频网站| 麻豆一区二区99久久久久| 久久精品国内一区二区三区| 亚洲欧美日韩国产成人精品影院 | 高清成人免费视频| 91麻豆福利精品推荐| 精品三级在线看| 中文字幕av一区二区三区高| 日本欧美一区二区三区| 国产精品麻豆99久久久久久| 日韩国产精品久久久久久亚洲| 一本到三区不卡视频| 欧美日韩亚洲丝袜制服| 精品日韩一区二区三区| 亚洲男女毛片无遮挡| 国产一区不卡在线| 欧美zozozo| 亚洲日本一区二区| 国产乱人伦偷精品视频不卡| 2022国产精品视频| 日韩av午夜在线观看| 91精品麻豆日日躁夜夜躁| 亚洲三级免费观看| 一区二区三区在线免费视频| av成人免费在线| 亚洲成人精品影院| 91精品国产黑色紧身裤美女| 日本在线不卡视频| 国产精品无人区| 国产一区二区三区最好精华液| 欧美一级精品在线| 国产高清精品在线| 日韩精品一区在线观看| 成人黄色网址在线观看| 亚洲精选视频免费看| 国产女主播视频一区二区| 九九九久久久精品| 亚洲视频在线一区观看| 欧美亚洲国产一区在线观看网站| 天天爽夜夜爽夜夜爽精品视频| 欧美电影免费观看完整版| 国产真实乱偷精品视频免| 中文字幕在线视频一区| 日韩一区二区电影| 91美女福利视频| 国产精品一区二区在线观看网站| 亚洲一二三四在线观看| 日本一区二区三区国色天香| 欧美日本在线一区| 国产精品一区在线| 国产精品家庭影院| av电影一区二区| 亚洲国产精品av| 久久久久亚洲综合| 亚洲人成亚洲人成在线观看图片 | 91精品福利视频| 欧美精品在线观看一区二区| 日韩一区二区在线看片| 精品乱人伦小说| 亚洲国产成人自拍| 手机精品视频在线观看| 国产一区二区中文字幕| 91国内精品野花午夜精品| 日韩一级黄色片| 一区二区欧美在线观看| 国产不卡高清在线观看视频| 在线观看一区不卡| 欧美成人猛片aaaaaaa| **网站欧美大片在线观看| 精品亚洲成a人在线观看| 在线一区二区三区| 国产精品网曝门| 久久精品国产免费看久久精品| 欧美日韩中文一区| 午夜精品成人在线| 欧美精品在欧美一区二区少妇| 自拍偷拍国产精品| 精品国产乱码久久久久久闺蜜 | 在线观看91av| 一区二区在线观看免费视频播放| 国产成人鲁色资源国产91色综 | 日本一区二区三区四区在线视频| 日韩精品欧美精品| 欧美羞羞免费网站| 亚洲高清在线视频| 69堂成人精品免费视频| 日韩精品三区四区| 91 com成人网| 韩国精品免费视频| 石原莉奈一区二区三区在线观看| 亚洲国产精品久久艾草纯爱| 色婷婷综合久久久久中文 | 99精品视频在线观看免费| 日韩理论片在线| 成人性生交大片免费| 久久婷婷久久一区二区三区| 懂色av一区二区夜夜嗨| 亚洲天堂av老司机| 欧美手机在线视频| 精品无码三级在线观看视频| 日韩免费观看高清完整版| 国产经典欧美精品| 亚洲中国最大av网站| 欧美一区二区三区日韩视频| 不卡影院免费观看| 美女诱惑一区二区| 亚洲男人的天堂在线aⅴ视频 | thepron国产精品| 午夜不卡在线视频| 亚洲美女免费视频| 日韩一区有码在线| 国产丝袜在线精品| 久久久国产综合精品女国产盗摄| 91九色02白丝porn| 91蝌蚪国产九色| 色综合色综合色综合| 风流少妇一区二区| 国产成人av电影| 国产一区在线不卡| 国产一区二区三区蝌蚪| 久久国内精品自在自线400部| 亚洲一区自拍偷拍| 国产亚洲欧美日韩日本| 久久久久久99久久久精品网站| eeuss国产一区二区三区| 成人免费视频免费观看| 欧美日韩不卡视频| 欧美一卡在线观看| 精品国产亚洲在线| 精品国产乱码久久久久久老虎| 国产精品高潮呻吟久久| 久久久久成人黄色影片| 国产精品女同互慰在线看| 中文字幕日韩一区| 日韩女优制服丝袜电影| 在线欧美一区二区| 日韩女优av电影在线观看| 国产欧美一区二区精品性色| 福利91精品一区二区三区| 欧美在线视频全部完| 日韩免费在线观看| 一区免费观看视频| 韩国毛片一区二区三区| 色天天综合色天天久久| 懂色一区二区三区免费观看| 成人性生交大片免费看在线播放| 在线精品视频一区二区| 日本一区二区免费在线观看视频| 午夜精品影院在线观看| 国产美女视频91| 欧美人动与zoxxxx乱| 中文字幕精品一区二区精品绿巨人 | 久久99精品国产麻豆婷婷| 国产精品嫩草影院com| 秋霞午夜鲁丝一区二区老狼| 色哟哟一区二区在线观看| 久久精品亚洲精品国产欧美kt∨| 日韩综合在线视频| 欧洲av在线精品| 一区二区在线观看av| 欧美性生活一区| 亚洲一区二区三区中文字幕在线| 色婷婷激情综合| 日韩av中文在线观看|