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

本文共 3117 字,大约阅读时间需要 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:

# 创建默认索引的Series
s_default = pd.Series(range(15)) # 索引是0到14
# 创建自定义索引的Series
s_custom_index = pd.Series(range(10), index=['A', 'B', 'C', 'D', 'E'])
# 通过字典创建Series(注意字典和索引长度一致)
s_dict = pd.Series({'a': 1, 'b': 2}, index=['a', 'b'])
# 创建全局常数的Series
s_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:5
print(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 np
data = 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 pd
import 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 datetime
import 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/

你可能感兴趣的文章
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>