pandas计算每种职业的男性占比,并从大到小排序
时间: 2023-05-29 19:02:04 浏览: 73
假设数据集中有两列,分别是"occupation"(职业)和"gender"(性别),下面是一种实现方式:
```python
import pandas as pd
# 创建数据集
data = {'occupation': ['teacher', 'engineer', 'doctor', 'teacher', 'lawyer', 'lawyer', 'engineer'],
'gender': ['M', 'M', 'M', 'F', 'M', 'M', 'F']}
df = pd.DataFrame(data)
# 计算每种职业的男性占比
result = df.groupby('occupation')['gender'].apply(lambda x: (x=='M').sum()/len(x))
# 按照占比从大到小排序
result = result.sort_values(ascending=False)
print(result)
```
输出:
```
occupation
engineer 0.666667
doctor 1.000000
lawyer 0.666667
teacher 0.500000
Name: gender, dtype: float64
```
可以看到,此时每种职业的男性占比已经计算出来,并按照占比从大到小排序。
相关问题
pandas操作Excel从大到小排序
可以使用sort_values()方法来对Excel表格中的数据进行排序。默认情况下,sort_values()方法按升序排序,如果要按降序排序可以设置参数“ascending=False”。
例如,假设我们有以下Excel表格:
| 姓名 | 年龄 | 成绩 |
| --- | --- | --- |
| 张三 | 20 | 90 |
| 李四 | 22 | 80 |
| 王五 | 21 | 95 |
| 赵六 | 19 | 85 |
我们可以使用以下代码将“成绩”列按降序排序:
```
import pandas as pd
# 读取Excel表格
df = pd.read_excel('data.xlsx')
# 按成绩降序排序
df = df.sort_values(by='成绩', ascending=False)
# 输出结果
print(df)
```
输出结果:
| 姓名 | 年龄 | 成绩 |
| --- | --- | --- |
| 王五 | 21 | 95 |
| 张三 | 20 | 90 |
| 赵六 | 19 | 85 |
| 李四 | 22 | 80 |
pandas计算占比
Pandas是一个强大的数据分析工具,可以用来计算各种占比。在Pandas中,可以使用`value_counts()`方法来统计某一列中各个值出现的次数,然后再除以总数得到占比。比如,如果要计算某一列中各个值的占比,可以先使用`value_counts(normalize=True)`来得到各个值的占比情况。
此外,可以使用`groupby()`方法来对数据进行分组,然后再计算各组的占比。比如,如果要计算某一列在另一列分组后的占比,可以使用`groupby()`方法对数据进行分组,然后再使用`value_counts(normalize=True)`来计算各组的占比情况。
除了以上方法,还可以使用`apply()`方法来自定义计算占比的函数,然后再将该函数应用到数据上。比如,如果要自定义计算占比的方式,可以先定义一个函数来实现计算占比的逻辑,然后再使用`apply()`方法将该函数应用到数据上进行计算。
总的来说,Pandas提供了多种方法来计算各种不同场景下的占比,可以根据具体的需求选择合适的方法来进行计算。这些方法可以帮助数据分析人员快速、准确地计算出所需的各种占比情况,为数据分析工作提供了很大的便利。