036—pandas 按行将列名根据值由大到小排序

前言

数据处理中,按行排列的列名可以提供更直观的数据探索和分析方式。

你可以逐行查看列名,了解每列的含义和特征,有助于更好地理解数据集的结构和内容。

需求:

  • 需要增加一列「分布方式」,每行的值是本行基金名称对应列名及数量,顺序按照值大小,值为 0 的不显示

思路:

  • 先用 apply() 按行,将构成每行 Series 转为字典,这时字典的键为列名,值为数值。
  • 接着用列表推导式过滤值为 0 的项,得到一个列表。
  • 再用 join() 方法用顿号 、 将列表的所有项连接起来。
  • 最后将得到的结果指定为一个列。

使用步骤

读入数据

代码如下(示例):

python 复制代码
mport io
import pandas as pd


data = '''
基金名称 电子 传媒 计算机
 基金A  1  6   7
 基金B  0  3   8
 基金C  7  0   9

'''

df = pd.read_csv(io.StringIO(data), delim_whitespace=True) #通过指定delim_whitespace=True参数来指示使用空格作为分隔符
df
python 复制代码
# 代码:
# 先设置基金名称为索引,这时基金名称就不参加行的计算,仅值进行计算。
# 用 apply() 按行将每行 Series 进行排序,最后转为字典:
(
    df.set_index('基金名称')
    .apply(lambda x: x.sort_values(ascending=False).to_dict(), axis=1) #对每个基金的投资分布按照降序排序,并转换成字典的形式
)
python 复制代码
# 通过列表推导式,将值为 0 的过滤,得到列表:
(
    df.set_index('基金名称')
    .apply(lambda x: x.sort_values(ascending=False).to_dict(), axis=1)
    .map(lambda x: [f'{k}({v})' for k,v in x.items() if v>0])
)
python 复制代码
# 用中文顿号连接列表的项:
# 使用map()函数将每个Series对象中的字符串用'、'连接起来,形成一个新的字符串
col = (
    df.set_index('基金名称')
    .apply(lambda x: x.sort_values(ascending=False).to_dict(), axis=1)
    .map(lambda x: [f'{k}({v})' for k,v in x.items() if v>0])
    .map('、'.join)
)
col
python 复制代码
# 将得到的列值指定到数据中:
df.assign(行业分布=col.array) # col.array表示将列数据以数组的形式添加到DataFrame对象中

总结

以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
姜—姜5 天前
数据分析总结
数据挖掘·数据分析·numpy·pandas·matplotlib·jieba·seaborn
万粉变现经纪人10 天前
如何解决pip安装报错ModuleNotFoundError: No module named ‘transformers’问题
人工智能·python·beautifulsoup·pandas·scikit-learn·pip·ipython
史锦彪12 天前
Pandas 入门:数据分析的得力工具
数据挖掘·数据分析·pandas
Wangsk13312 天前
用 Python 批量处理 Excel:从重复值清洗到数据可视化
python·信息可视化·excel·pandas
木木子999913 天前
Pandas query() 方法详解
pandas·query
修钩.18 天前
力扣 Pandas 挑战(5)---数据分组
算法·leetcode·pandas
万粉变现经纪人18 天前
如何解决pip安装报错ModuleNotFoundError: No module named ‘plotly’问题
python·scrapy·plotly·pycharm·flask·pandas·pip
码界奇点19 天前
Python深度挖掘:openpyxl与pandas高效数据处理实战指南
开发语言·数据库·python·自动化·pandas·python3.11
码界筑梦坊19 天前
91-基于Spark的空气质量数据分析可视化系统
大数据·python·数据分析·spark·django·numpy·pandas
蔷薇のぬ19 天前
Python 使用pandas库实现Excel字典码表对照自动化处理
python·pandas