第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

多索引 df 的箱線圖

多索引 df 的箱線圖

繁星淼淼 2023-06-27 13:31:03
我想做兩件事:我想為每個(gè)日期/天創(chuàng)建一個(gè)箱線圖,其中包含該日期中 MeanTravelTimeSeconds 的所有值。MeanTravelTimeSeconds 元素的數(shù)量隨日期而變化(例如,某一天可能有 300 個(gè)值,而另一天可能有 400 個(gè))。另外,我想將多索引系列中的行轉(zhuǎn)換為列,因?yàn)槲也幌M看味贾貜?fù)行。如果它保持這樣,我就會(huì)有數(shù)千萬不必要的行。這是在按日期索引的 df 上使用 df.stack() 后的結(jié)果系列(日期是日期時(shí)間對(duì)象索引):Date                                        2016-01-02  NumericIndex                        1611664            OriginMovementID                       4744            DestinationMovementID                  5084            MeanTravelTimeSeconds                  1233            RangeLowerBoundTravelTimeSeconds        756                                                 ...   2020-03-31  DestinationMovementID                  3594            MeanTravelTimeSeconds                  1778            RangeLowerBoundTravelTimeSeconds       1601            RangeUpperBoundTravelTimeSeconds       1973            DayOfWeek                           TuesdayLength: 11281655, dtype: object當(dāng)我使用seaborn繪制箱線圖時(shí),在使用不同的選擇后,我遇到了很多錯(cuò)誤。如果我嘗試這樣做df.stack().unstack()或df.stack().T收到以下錯(cuò)誤:Index contains duplicate entries, cannot reshape如何繪制箱線圖以及如何將行轉(zhuǎn)換為列?
查看完整描述

1 回答

?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

您確實(shí)需要使您的索引獨(dú)一無二,以使您想要的功能發(fā)揮作用。我建議在其他兩個(gè)關(guān)鍵列中每次更改時(shí)都會(huì)重置一個(gè)序列號(hào)。


import datetime as dt

import random

import numpy as np

cat = ["NumericIndex","OriginMovementID","DestinationMovementID","MeanTravelTimeSeconds",

 "RangeLowerBoundTravelTimeSeconds"]


df = pd.DataFrame(

[{"Date":d, "Observation":cat[random.randint(0,len(cat)-1)], 

  "Value":random.randint(1000,10000)} 

 for i in range(random.randint(5,20)) 

 for d in pd.date_range(dt.datetime(2016,1,2), dt.datetime(2016,3,31), freq="14D")])


# starting point....

df = df.sort_values(["Date","Observation"]).set_index(["Date","Observation"])


# generate an array that is sequential within change of key

seq = np.full(df.index.shape, 0)

s=0

p=""

for i, v in enumerate(df.index):

    if i==0 or p!=v: s=0

    else: s+=1

    seq[i] = s

    p=v

df["SeqNo"] = seq

# add to index - now unstack works as required

dfdd = df.set_index(["SeqNo"], append=True)

dfdd.unstack(0).loc["MeanTravelTimeSeconds"].boxplot()

print(dfdd.unstack(1).head().to_string())


輸出 

http://img1.sycdn.imooc.com//649a74670001700f04450245.jpg

                                 Value                                                                                     

Observation      DestinationMovementID MeanTravelTimeSeconds NumericIndex OriginMovementID RangeLowerBoundTravelTimeSeconds

Date       SeqNo                                                                                                           

2016-01-02 0                       NaN                   NaN       2560.0           5324.0                           5085.0

           1                       NaN                   NaN       1066.0           7372.0                              NaN

2016-01-16 0                       NaN                6226.0          NaN           7832.0                              NaN

           1                       NaN                1384.0          NaN           8839.0                              NaN

           2                       NaN                7892.0          NaN              NaN                              NaN



查看完整回答
反對(duì) 回復(fù) 2023-06-27
  • 1 回答
  • 0 關(guān)注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)