本文共 3063 字,大约阅读时间需要 10 分钟。
Pandas 是基于 NumPy 的一款功能强大的数据处理框架,广泛应用于数据分析和科学计算领域。作为 NumPy 的封装,Pandas 提供更高层次的操作模式,适合处理结构化数据。本文将从基础操作入手,逐步介绍 Pandas 的核心功能,帮助读者快速掌握 Pandas 的使用方法。
Pandas.Series 是 Pandas 中的核心容器类似于 NumPy 的数组,但 support 转换为 Pandas 数据框架。Series 由两部分构成:数据和索引。数据部分可以是标量、数组或其他可迭代对象,索引部分决定了数据的访问方式,比如行、列等。
根据需求,可以通过多种方式创建Pandas.Series:
# 创建默认索引的Seriess_default = pd.Series(range(15)) # 索引是0到14# 创建自定义索引的Seriess_custom_index = pd.Series(range(10), index=['A', 'B', 'C', 'D', 'E'])# 通过字典创建Series(注意字典和索引长度一致)s_dict = pd.Series({'a': 1, 'b': 2}, index=['a', 'b'])# 创建全局常数的Seriess_timezone = pd.Series('UTC', index=pd.date_range('2023-10-10', periods=3))
Series 的修改操作非常简便,只需通过 s['指定索引'] = 新值
即可:
# 示例:修改特定元素的值s = pd.Series([1, 2, 3, 4, 5], index=['a', 'b', 'c', 'd', 'e'])s['a'] = 10 # 输出:a: 10, b:2..., e:5print(s)
Pandas.DataFrame 是 Pandas 中最常用的数据容器,它类似于 Excel 表格,具有多行多列的结构。DataFrame 由两部分组成:数据矩阵(rows和columns)和索引(rows)和列索引(columns)。DataFrame 支持各种数据操作,比如筛选、排序、转换等。
可以通过多种方式创建DataFrame:
# 1. 通过 NumPy 数组创建import numpy as npdata = np.random.randint(0, 10, size=(5, 5)) # 5行5列,值在0-9之间df1 = pd.DataFrame(data)# 2. 通过自定义列名创建df2 = pd.DataFrame(data, columns=['A', 'B', 'C', 'D', 'E'])# 3. 通过字典定义列数据创建data_dict = { '省份': ['广东', '山东', '河南'], '人口': [10999, 9946, 9532], '城市': ['广州', '济南', '郑州']}df3 = pd.DataFrame(data_dict)# 4. 通过Pandas.Series创建s1 = pd.Series(range(5), index=['a', 'b', 'c', 'd', 'e'])s2 = pd.Series([5, 6, 7, 8, 9], index=['a', 'b', 'c', 'd', 'e'])df4 = pd.DataFrame([s1, s2])
print(df) # 显示DataFrame的所有内容
df['新列'] = df['原列'] + 1 # 例如:df['A'] + 1
# 按照条件筛选filtered_df = df[df['A'] > 10]# 删除指定行df.drop(df[df['A'] > 10].index, inplace=True)
sorted_df = df.sort_values('A') # 按列A从小到大排序
import pandas as pdimport time# 读取Excel文件start_time = time.time()df = pd.read_excel('files/order2019.xlsx', index_col='id')end_time = time.time()# 查看读取结果print(len(df)) # 输出:104557行print(f'读取数据花了 {end_time - start_time:.2f} 秒')
from datetime import datetimeimport pandas as pd# 创建示例时间数据start_time = datetime(2023, 1, 1)end_time = datetime(2023, 12, 31, 23, 59, 59)# 将DataFrame中的时间列转换为datetime类型df['order_time'] = pd.to_datetime(df['order_time'])df['pay_time'] = pd.to_datetime(df['pay_time'])# 过滤早于2023年1月1日的数据early_orders = df[df['order_time'] < start_time]print(early_orders)
# 删除包含None值的行df.dropna(inplace=True)# 替换空值(这里用了众数替换chanelID为空值)channel_mode = df.chanelID.dropna().mode()df.chanelID = channel_mode[z]print(df[df['chanelID'].isnull()])
# 根据订单金额和支付金额计算折扣率df['discount'] = df['payment'] / df['order_amount']print(df.describe())
Pandas 是一个强大的数据处理框架,熟练掌握它将极大提升你的数据处理效率。通过以上案例,可以看到 Pandas 红黄绿薯的功能力。不仅可以快速读取和处理各种数据格式,还可以定位和清洗数据,甚至可以生成新的数据集。未来,Pandas 的学习还可以继续深入,比如学习更多高级功能,如数据聚合、时间序列分析、数据可视化等。
如果对以上内容感兴趣,可以进一步学习《Pandas 实战入门》等书籍,或者查阅官方文档和Stack Overflow 资源,持续提升你的数据处理技能。
转载地址:http://iyayk.baihongyu.com/