首页 > 编程知识 正文

Python列变行解析

时间:2023-11-19 14:50:37 阅读:293169 作者:GWFJ

Python 是一种面向对象、动态类型的解释型高级程序设计语言,广泛应用于人工智能、Web 开发、科学计算等领域。Python 的数据处理能力在数据分析和科学计算等任务中表现突出,其中列变行是常见需求之一。

一、Python列变行用途

在实际工作和生活中,我们经常会遇到将一列数据转换为多行数据的需求。比如爬取网页上的表格数据,将表格中的数据转换为按行展示的数据,或者将一列邮件地址转换为单独的一行邮件地址列表。Python 列变行就是解决这种需求的一种常用操作技巧。

二、手动实现Python列变行操作

实现Python列变行主要需要了解Python中的基本数据结构和常用操作。下面以爬取美股前十大基金列表为例,手动实现Python列变行操作。

import requests         # 导入 requests 库
from bs4 import BeautifulSoup    # 导入 BeautifulSoup 库

url = 'https://finance.yahoo.com/mutualfunds?count=25&offset=0&sort=largest'   # 目标网页的网址
r = requests.get(url)       # 请求网页
soup = BeautifulSoup(r.text, 'html.parser')      # 解析网页

# 定位表格中的基金名和代码
table = soup.find_all('table')[0]     # 定位表格
trs = table.tbody.find_all('tr')      # 定位表格中的行
for tr in trs:      # 遍历行
    ticker = tr.find_all('td')[0].text    # 获取基金代码
    name = tr.find_all('td')[1].text      # 获取基金名称
    print(ticker + ': ' + name)      # 打印基金代码和名称

在上述代码中,我们使用了 requests 库请求网页,并使用 BeautifulSoup 库解析网页。定位到目标表格后,遍历表格中的行,获取每行中的数据,将基金代码和名称打印出来。这样,我们就手动实现了Python列变行操作。

三、Pandas库实现Python列变行操作

手动实现 Python 列变行操作虽然不难,但随着数据量的增加,代码的复杂度和开发难度也将随之增加。而Pandas库提供的 pivot() 和 melt() 函数可以方便快捷地实现 Python 列变行操作,大大提高了开发效率。

1. 使用Pandas库的pivot()函数实现列变行

import pandas as pd

fund_list = {'code': ['VFIAX', 'VTIAX', 'FXAIX'],
             'name': ['Vanguard 500 Index Fund Admiral Shares',
                     'Vanguard Total International Stock Index Fund Admiral Shares',
                     'Fidelity 500 Index Fund']}

df = pd.DataFrame(fund_list)     # 将数据转换为DataFrame格式
df_pivot = df.pivot(columns='name', values='code')      # 使用Pandas的pivot()函数实现列变行

print(df_pivot)     # 打印转换后的结果

在上述代码中,我们将数据转换为 Pandas 的 DataFrame 格式,然后使用 pivot() 函数将基金名称作为列标签,基金代码作为值,实现了列变行操作。

2. 使用Pandas库的melt()函数实现行变列

import pandas as pd

df = pd.DataFrame({'A': ['a', 'b', 'c'],
                   'B': [1, 3, 5],
                   'C': [2, 4, 6]})     # 将数据转换为DataFrame格式

df_melt = pd.melt(df, id_vars='A', value_vars=['B', 'C'])     # 使用Pandas的melt()函数实现行变列

print(df_melt)      # 打印转换后的结果

在上述代码中,我们使用 Pandas 的 melt() 函数将数据从多个列中依次转换为一列,并使用 id_vars 和 value_vars 参数指定需要保留的列和需要转换的列。

总结

Python 列变行是一种常见的数据处理操作,可以方便地将一列数据转换为多行数据。手动实现 Python 列变行虽然不难,但代码复杂度较高,不利于开发和维护。而Pandas库提供了 pivot() 和 melt() 函数,可以方便快捷地实现列变行和行变列操作,大大提高了开发效率。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。