当前位置: 首页 > news >正文

pandas常用方法

一、数据创建与读取

1. 创建 DataFrame/Series
import pandas as pd
import numpy as np
​
# 创建 Series(一维)
s = pd.Series([1, 3, 5, np.nan, 6, 8], index=['a', 'b', 'c', 'd', 'e', 'f'])
​
# 创建 DataFrame(二维)
df = pd.DataFrame({'A': [1, 2, 3, 4],'B': pd.Timestamp('20230101'),'C': pd.Series(1, index=list(range(4)), dtype='float32'),'D': np.array([3] * 4, dtype='int32'),'E': pd.Categorical(["test", "train", "test", "train"]),'F': 'foo'
})
2. 读取外部数据
# 读取 CSV
df = pd.read_csv('data.csv')
​
# 读取 Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')
​
# 读取 SQL
import sqlite3
conn = sqlite3.connect('database.db')
df = pd.read_sql('SELECT * FROM table', conn)

二、数据查看与基础信息

# 查看前/后 N 行(默认5行)
df.head(3)   # 前3行
df.tail(3)   # 后3行
​
# 查看索引、列名、数据类型
df.index          # 索引
df.columns        # 列名
df.dtypes         # 各列数据类型
​
# 查看基本统计信息(数值列)
df.describe()     # 计数、均值、标准差、最值、分位数
​
# 查看数据形状(行数, 列数)
df.shape          # (n_rows, n_cols)
​
# 查看数据是否为空
df.isnull()       # 元素级是否为空
df.isnull().sum() # 每列空值数量

三、数据筛选与查询

1. 按列筛选
# 选择单列(返回 Series)
df['A']  # 或 df.A
​
# 选择多列(返回 DataFrame)
df[['A', 'B']]
2. 按行筛选
# 按位置筛选(iloc:基于整数索引)
df.iloc[0]       # 第0行
df.iloc[0:3, 0:2] # 前3行,前2列
​
# 按标签筛选(loc:基于索引/列名)
df.loc[0:2, ['A', 'B']]  # 索引0-2行,A、B列
​
# 按条件筛选(布尔索引)
df[df['A'] > 2]                  # A列值>2的行
df[(df['A'] > 2) & (df['E'] == 'test')]  # 多条件(用&/|,而非and/or)
3. 其他筛选方法
# 筛选包含特定值的行
df[df['E'].isin(['test'])]
​
# 筛选非空值行
df[df['A'].notnull()]

四、数据修改与处理

1. 新增 / 修改列
# 新增列
df['new_col'] = df['A'] * 2  # 基于现有列计算
df['new_col2'] = 'value'     # 固定值
​
# 修改列值
df.loc[df['A'] > 2, 'A'] = 0  # 条件修改
​
# 重命名列
df.rename(columns={'A': 'new_A', 'B': 'new_B'}, inplace=True)
2. 处理缺失值
# 填充空值
df.fillna(0)                # 用0填充
df.fillna(df.mean())        # 用均值填充(数值列)
df['A'].fillna(method='ffill')  # 向前填充(用前一行值)
​
# 删除空值
df.dropna()                 # 删除含空值的行
df.dropna(axis=1)           # 删除含空值的列
3. 数据排序
# 按列值排序
df.sort_values(by='A')          # 升序
df.sort_values(by='A', ascending=False)  # 降序
​
# 按索引排序
df.sort_index()                # 索引升序

五、分组与聚合(Groupby)

# 按列分组
grouped = df.groupby('E')  # 按E列分组
​
# 分组后聚合
grouped.sum()              # 每组求和
grouped.mean()             # 每组求均值
grouped['A'].max()         # 仅对A列求每组最大值
​
# 多函数聚合
grouped.agg({'A': ['sum', 'mean'],'B': 'max'
})
​
# 分组后应用自定义函数
grouped.apply(lambda x: x['A'] * 2)  # 对每组A列乘2

六、数据合并与连接

# 示例数据
df1 = pd.DataFrame({'key': ['a', 'b', 'c'], 'value': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['b', 'c', 'd'], 'value': [4, 5, 6]})
​
# 内连接(仅保留共有的key)
pd.merge(df1, df2, on='key', suffixes=('_left', '_right'))
​
# 左连接(保留df1所有行)
pd.merge(df1, df2, on='key', how='left')
​
# 纵向拼接(行合并)
pd.concat([df1, df2], ignore_index=True)  # ignore_index重置索引

七、数值计算与转换

# 列间运算
df['A'] + df['D']  # 列相加
df['A'] * 10       # 列乘常数
​
# 滚动计算(滑动窗口)
df['A'].rolling(window=2).mean()  # 2期滑动均值
​
# 累计计算
df['A'].cumsum()   # 累计和
df['A'].cumprod()  # 累计积
​
# 数据类型转换
df['A'] = df['A'].astype('float32')  # 转为float
df['B'] = pd.to_datetime(df['B'])    # 转为日期类型

八、数据导出

# 导出为CSV
df.to_csv('output.csv', index=False)  # index=False不导出索引
​
# 导出为Excel
df.to_excel('output.xlsx', sheet_name='Data', index=False)
​
# 导出为SQL
df.to_sql('table', conn, if_exists='replace', index=False)

http://www.dtcms.com/a/353782.html

相关文章:

  • 人工智能和机器学习如何改善机器人技术
  • 【VSCode】VSCode为Java C/S项目添加图形用户界面
  • YOLOv8-SMOT:一种高效鲁棒的实时小目标跟踪框架:基于切片辅助训练与自适应关联
  • 腾讯云 CVM 上的 SpringBoot 应用避免非法访问
  • Redis实战-优惠券秒杀解决方案总结大全
  • 开疆智能Profinet转EtherCAT网关连接TR-Electronic传感器配置案例
  • 部署网页在服务器(公网)上笔记 infinityfree 写一个找工作单html文件的网站
  • 分享 HTML 邮件开发的 15 个踩坑实录
  • Ubuntu 切换 SOCKS5代理 和 HTTP 代理并下载 Hugging Face 模型
  • 树莓派装的Ubuntu Server连接不上WIFI
  • Day14——JavaScript 核心知识全解析:变量、类型与操作符深度探秘
  • DeFi协议Lombard能突破比特币生态原生叙事困境吗?
  • 鸿蒙ArkUI 基础篇-06-组件基础语法-Column/Row/Text
  • 主键索引和普通索引的区别
  • 移动端(微信等)使用 vConsole调试console
  • 吱吱企业通讯软件打破跨部门沟通壁垒,为企业搭建安全的通讯环境
  • 论文Review 3DGS PGSR | TVCG2024 ZJU-3DV | 几何约束的3DGS表面重建
  • 京东大模型安全实践:从全链路防护到合规备案的完整技术方案
  • Apache Flink错误处理实战手册:2年生产环境调试经验总结
  • 私域电商新范式:开源AI智能名片链动2+1模式S2B2C商城小程序赋能传统行业流量转化
  • 从感知机到大模型:神经网络的全景解析与实践指南
  • MQTT broker 安装与基础配置实战指南(二)
  • STM32——中断
  • PLC_博图系列☞基本指令”PT:加载持续时间“
  • 基于Kafka的延迟队列
  • 身份证号校验码算法
  • C++中类继承的意义
  • PMP项目管理知识点-⑮预测型项目概念辨析
  • 【Kafka】项目整合使用案例
  • 瑞芯微开发工具Linux Linux_Upgrade_Tool使用方法(镜像烧录)