Python:在数据框内分离列并进行计算

时间:2017-09-28 04:01:09

标签: python pandas numpy

Python初学者所以请耐心等待。

我有一个包含4列和~1500行的文件。我需要做的是将以下信息返回到控制台:

1)最高收入者的性别,年龄和工资

2)最低收入者的性别,年龄和工资

3)此数据集中前十名收入者中的女性人数。

我的数据看起来有点像(在csv文件中):

Gender, Years, Education, Wage
Female, 4, 9, 8.35
Male, 6, 6, 7.86 
Male, 2, 8, 6.95
Female, 5, 6, 7.45  
Male, 13, 9, 9.56

我被告知大熊猫或numpy最适合这类工作,但我对如何处理这类问题的格式感到困惑。

3 个答案:

答案 0 :(得分:3)

对于最小值和最大值,@ Zero可以很好地覆盖它。我会提出这些想法:

  • 您可以使用input

    一次性完成
    agg
  • 您可以使用

    显示这些行
    df.Wage.agg(['idxmax', 'idxmin'])
    
    idxmax    4
    idxmin    2
    Name: Wage, dtype: int64
    
  • 你可以df.loc[df.Wage.agg(['idxmax', 'idxmin'])] Gender Years Education Wage 4 Male 13 9 9.56 2 Male 2 8 6.95 回来,以获得漂亮的索引值,告诉你哪个是最小值和最大值

    join

对于收入最高的女性人数,我会使用df.Wage.agg(['idxmax', 'idxmin']).to_frame('index').join(df, on='index') index Gender Years Education Wage idxmax 4 Male 13 9 9.56 idxmin 2 Male 2 8 6.95 我们不仅传递pd.DataFrame.nlargest的数字,而是传递我们用于确定最大数量的列。

n

答案 1 :(得分:2)

1)最高收入者

In [4336]: df.loc[df['Wage'].idxmax()]
Out[4336]:
Gender       Male
Years          13
Education       9
Wage         9.56
Name: 4, dtype: object

2)最低收入者

In [4337]: df.loc[df['Wage'].idxmin()]
Out[4337]:
Gender       Male
Years           2
Education       8
Wage         6.95
Name: 2, dtype: object

3)前10名收入者中的女性人数

In [4338]: df[df['Wage'] >= df['Wage'].nlargest(10).iloc[-1]]['Gender'].eq('Female').sum()
Out[4338]: 2

详细

您可以将csv读入数据框,如df = pd.read_csv('filename.csv')

In [4339]: df
Out[4339]:
   Gender  Years  Education  Wage
0  Female      4          9  8.35
1    Male      6          6  7.86
2    Male      2          8  6.95
3  Female      5          6  7.45
4    Male     13          9  9.56

答案 2 :(得分:1)

使用pandas:

import pandas as pd

df = pd.read_csv('csv_file.csv')

df.sort_values('Wage', ascending=False, inplace=True)

highest_earner = df.iloc[0]
lowest_earner = df.iloc[-1]

num_of_females = len(df.iloc[0:10][df['Gender'] == 'Female'])