加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

如何在图形中绘制pandas groupby值?

发布时间:2020-12-20 12:13:06 所属栏目:Python 来源:网络整理
导读:我有一个csv文件,其中包含性别和婚姻状态以及更多列,如下所示. Loan_ID,Gender,Married,Dependents,Education,Self_Employed,ApplicantIncome,CoapplicantIncome,LoanAmount,Loan_Amount_Term,Credit_History,Property_Area,Loan_StatusLP001002,Male,No,Gra
我有一个csv文件,其中包含性别和婚姻状态以及更多列,如下所示.

Loan_ID,Gender,Married,Dependents,Education,Self_Employed,ApplicantIncome,CoapplicantIncome,LoanAmount,Loan_Amount_Term,Credit_History,Property_Area,Loan_Status
LP001002,Male,No,Graduate,5849,360,1,Urban,Y
LP001003,Yes,4583,1508,128,Rural,N
LP001005,3000,66,Y
LP001006,Not Graduate,2583,2358,120,Y
LP001008,6000,141,Y
LP001011,2,5417,4196,267,Y

我想要数不.已婚男性和女性的结果如下图所示

以下是我使用的代码:

import csv
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

if __name__ == '__main__':
    x=[]
    y=[]
    df = pd.read_csv(
        "/home/train.csv",usecols=[1,2]).dropna(subset=['Gender','Married'])  # Reading the dataset in a dataframe using Pandas
    groups = df.groupby(['Gender','Married'])['Married'].apply(lambda x: x.count())
    print(groups)

分组后我有以下结果:

Gender  Married
Female  No          80
        Yes         31
Male    No         130
        Yes        357

我想要一个如下图表

enter image description here

解决方法

您可以使用 groupby size然后使用 Series.plot.bar

Difference between count and size.

groups = df.groupby(['Gender','Married']).size()
groups.plot.bar()

graph

另一种解决方案是为重塑或crosstab添加unstack

print (df.groupby(['Gender','Married']).size().unstack(fill_value=0))
Married   No  Yes
Gender           
Female    80   31
Male     130  357

df.groupby(['Gender','Married']).size().unstack(fill_value=0).plot.bar()

要么:

pd.crosstab(df['Gender'],df['Married']).plot.bar()

graph

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读