簡體   English   中英

減少熊貓DataFrame的列中的行以進行繪圖

[英]Reducing rows in a column for a panda DataFrame for plotting

因此,我有一個csv數據表,已將其讀入panda DataFrame中,但是其中一列在多行中具有相同的字符串,這與它的分類數據是正確的,但是當我將該列與另一個值相對應時,它將此列中的每個單元格視為單獨的而不是將它們組合在一起。

Classification        Value
MIR-weak:             0.0896571179
MIR-weak:             0.1990277968
MIR-bright:           0.2850534357
MIR-bright:           0.0807078051
FIR-dark/MIR-bright:  1.7610864745
MIR-weak:             0.0826692503
MIR-weak:             0.349403222
MIR-weak:             0.7326764485
MIR-weak:             0.0179843643
MIR-weak:             0.0761941975
MIR-bright:           0.4298597194
MIR-weak:             0.4143098599
MIR-weak:             0.1439220025
MIR-weak:             0.0810787048
MIR-bright:           0.6369812293
MIR-weak:             0.0973845298
MIR-weak:             0.1871236732
MIR-weak:             1.5795256821
MIR-weak:             0.9072559132
MIR-weak:             0.6218977498
FIR-dark/MIR-bright:  0.6920326523
MIR-weak:             0.2580561867
MIR-bright:           0.055071288
MIR-weak:             1.0512992066

因此,當我使用DataFrame.plot()繪制這些列彼此相對時,x軸將第一列中的每個單元格都作為x值,而不是四個x值,每個分類都一個

用.plot()或對數據進行某種排序的方式嗎?

我假設您想要一個堆積的條形圖,所以從您的數據框開始像這樣

Classification     Value
0              MIR-weak  0.089657
1              MIR-weak  0.199028
2            MIR-bright  0.285053
3            MIR-bright  0.080708
4   FIR-dark/MIR-bright  1.761086
5              MIR-weak  0.082669
6              MIR-weak  0.349403
7              MIR-weak  0.732676
8              MIR-weak  0.017984
9              MIR-weak  0.076194
10           MIR-bright  0.429860
11             MIR-weak  0.414310
12             MIR-weak  0.143922
13             MIR-weak  0.081079
14           MIR-bright  0.636981
15             MIR-weak  0.097385
16             MIR-weak  0.187124
17             MIR-weak  1.579526
18             MIR-weak  0.907256
19             MIR-weak  0.621898
20  FIR-dark/MIR-bright  0.692033
21             MIR-weak  0.258056
22           MIR-bright  0.055071
23             MIR-weak  1.051299

您可以執行以下步驟:

  • 按分類排序。

  • 圍繞分類旋轉。

  • 更改列以擺脫多索引。

  • 對轉置后的數據框進行堆疊的條形圖。

D = D.sort_values("Classification").reset_index(drop=True)
D = D.pivot(columns='Classification')
D.columns = ["FIR-dark/MIR-bright", "MIR-bright", "MIR-weak"]
D.T.plot.bar(stacked=True,legend=False)

結果看起來很丑陋,因此您需要調整外觀。

不確定這是否正確,因為它只有三個類別,但是您的原件也只有三個類別。

您需要告訴熊貓“分類”列包含分類數據,為此,請使用astype

我使用read_clipboard讀取OP中的數據

import pandas as pd

df = pd.read_clipboard()

df['Classification']=df['Classification'].str.strip(':').astype(
'category',categories=['MIR-weak', 
                       'MIR-bright',
                       'FIR-dark/MIR-bright'], ordered=True)

df.plot(x='Classification',y='Value')

該圖看起來像 在此處輸入圖片說明

您還可以將groupby與均值/總和/大小或任何其他度量一起使用,以查看數據,這是按分類列對數據進行分組並計算每個組的均值然后繪制結果的示例

df.groupby('Classification').mean().plot(kind='bar')

結果看起來像 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM