博客
关于我
pandas基础常用用法总结
阅读量:805 次
发布时间:2019-03-25

本文共 3063 字,大约阅读时间需要 10 分钟。

Pandas入门简介:从零开始学Pandas框架

Pandas 是基于 NumPy 的一款功能强大的数据处理框架,广泛应用于数据分析和科学计算领域。作为 NumPy 的封装,Pandas 提供更高层次的操作模式,适合处理结构化数据。本文将从基础操作入手,逐步介绍 Pandas 的核心功能,帮助读者快速掌握 Pandas 的使用方法。


1. Pandas.Series:最基础的数据容器

1.1 什么是Pandas.Series?

Pandas.Series 是 Pandas 中的核心容器类似于 NumPy 的数组,但 support 转换为 Pandas 数据框架。Series 由两部分构成:数据索引。数据部分可以是标量、数组或其他可迭代对象,索引部分决定了数据的访问方式,比如行、列等。

1.2 怎么创建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))

1.3 如何修改Series中的值?

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)

2. Pandas.DataFrame:扩展的数据容器

2.1 什么是Pandas.DataFrame?

Pandas.DataFrame 是 Pandas 中最常用的数据容器,它类似于 Excel 表格,具有多行多列的结构。DataFrame 由两部分组成:数据矩阵(rows和columns)和索引(rows)和列索引(columns)。DataFrame 支持各种数据操作,比如筛选、排序、转换等。

2.2 怎么创建Pandas.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])

2.3 DataFrame的常用操作

  • 查看数据
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从小到大排序

3. 数据清洗:常用操作的实践案例

3.1 如何读取Excel文件数据?

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} 秒')

3.2 如何处理时间数据?

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)

3.3 如何删除或替换空值?

# 删除包含None值的行df.dropna(inplace=True)# 替换空值(这里用了众数替换chanelID为空值)channel_mode = df.chanelID.dropna().mode()df.chanelID = channel_mode[z]print(df[df['chanelID'].isnull()])

3.4 如何添加新列?

# 根据订单金额和支付金额计算折扣率df['discount'] = df['payment'] / df['order_amount']print(df.describe())

结语

Pandas 是一个强大的数据处理框架,熟练掌握它将极大提升你的数据处理效率。通过以上案例,可以看到 Pandas 红黄绿薯的功能力。不仅可以快速读取和处理各种数据格式,还可以定位和清洗数据,甚至可以生成新的数据集。未来,Pandas 的学习还可以继续深入,比如学习更多高级功能,如数据聚合、时间序列分析、数据可视化等。

如果对以上内容感兴趣,可以进一步学习《Pandas 实战入门》等书籍,或者查阅官方文档和Stack Overflow 资源,持续提升你的数据处理技能。

转载地址:http://iyayk.baihongyu.com/

你可能感兴趣的文章
MyEclipse用(JDBC)连接SQL出现的问题~
查看>>
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
myeclipse配置springmvc教程
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>
MyEcplise中SpringBoot怎样定制启动banner?
查看>>
MyPython
查看>>
MTD技术介绍
查看>>
MySQL
查看>>
MySQL
查看>>
mysql
查看>>
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>
mt_rand
查看>>
mysql /*! 50100 ... */ 条件编译
查看>>