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

Python Pandas 实践学习笔记(1)

Python Pandas 教程

Pandas是一个开源的、BSD许可证的Python库,为Python编程语言提供高性能、易于使用的数据结构和数据分析工具。Python与Pandas在学术和商业领域都被广泛应用,包括金融、经济、统计学、分析等领域。在本教程中,我们将学习Python Pandas的各种特性以及如何在实践中使用它们。

教程对象

本教程适用于那些想要学习Pandas基础知识和各种函数的人。对于从事数据清洗和分析的人来说尤其有用。完成本教程后,您将有一个中等水平的专业知识,从这个水平上可以进一步提升自己的能力。

先决条件

您应该对计算机编程术语有基本的了解。对任何一种编程语言的基本理解都是一个加分项。Pandas库使用了NumPy的大部分功能。建议您在继续本教程之前先阅读我们的NumPy教程。您可以从下面的链接中访问它 − NumPy 教程

Pip install pandas

Pandas应用

Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据。

Pandas 可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。

Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

Pandas 是数据分析的利器,它不仅提供了高效、灵活的数据结构,还能帮助你以极低的成本完成复杂的数据操作和分析任务。

Pandas 提供了丰富的功能,包括:

  • 数据清洗:处理缺失数据、重复数据等。
  • 数据转换:改变数据的形状、结构或格式。
  • 数据分析:进行统计分析、聚合、分组等。
  • 数据可视化:通过整合 Matplotlib 和 Seaborn 等库,可以进行数据可视化。

数据读取与写入

使用pd.read_csv()读取CSV文件,pd.read_excel()读取Excel文件,pd.to_csv()写入CSV文件。
示例:

import pandas as pd  
df = pd.read_csv('data.csv')  
df.to_csv('output.csv', index=False)  

数据预览

通过df.head()查看前5行数据,df.tail()查看后5行数据,df.info()查看数据类型和缺失值。
示例:

df.head(10)  # 查看前10行  
df.info()    # 显示数据类型和内存使用  

数据筛选

使用布尔索引筛选满足条件的数据。
示例:

filtered_data = df[df['age'] > 30]  
specific_columns = df[['name', 'age']]  

数据排序

通过df.sort_values()按列排序。
示例:

sorted_df = df.sort_values('salary', ascending=False)  

缺失值处理

使用df.isnull()检查缺失值,df.dropna()删除缺失值,df.fillna()填充缺失值。
示例:

df.dropna(inplace=True)  
df['age'].fillna(df['age'].mean(), inplace=True)  

数据分组与聚合

通过df.groupby()分组并聚合数据。
示例:

grouped = df.groupby('department')['salary'].mean()  

数据合并

使用pd.concat()纵向合并数据,pd.merge()横向合并数据。
示例:

merged_df = pd.merge(df1, df2, on='id')  
combined_df = pd.concat([df1, df2])  

数据透视表

通过pd.pivot_table()创建透视表。
示例:

pivot = pd.pivot_table(df, values='sales', index='region', columns='month')  

时间序列处理

将字符串转换为时间类型并提取年份、月份。
示例:

df['date'] = pd.to_datetime(df['date'])  
df['year'] = df['date'].dt.year  

数据去重

使用df.drop_duplicates()删除重复行。
示例:

df_unique = df.drop_duplicates(subset=['name'])  

列重命名

通过df.rename()修改列名。
示例:

df.rename(columns={'old_name': 'new_name'}, inplace=True)  

数据类型转换

使用astype()转换列数据类型。
示例:

df['age'] = df['age'].astype(int)  

条件修改数据

通过np.where()df.loc条件修改数据。
示例:

import numpy as np  
df['status'] = np.where(df['score'] >= 60, 'Pass', 'Fail')  

字符串操作

使用str方法处理字符串列。
示例:

df['name'] = df['name'].str.upper()  
df['email_domain'] = df['email'].str.split('@').str[1]  

随机采样

通过df.sample()随机抽取数据。
示例:

sampled_df = df.sample(n=100, random_state=42)  

分箱操作

使用pd.cut()将连续数据分箱。
示例:

df['age_group'] = pd.cut(df['age'], bins=[0, 18, 35, 60, 100], labels=['child', 'young', 'adult', 'senior'])  

多条件筛选

结合|实现多条件筛选。
示例:

filtered = df[(df['age'] > 25) & (df['department'] == 'HR')]  

列计算

直接对列进行数学运算。
示例:

df['total'] = df['price'] * df['quantity']  

自定义函数应用

通过apply()应用自定义函数。
示例:

def categorize(x):  return 'High' if x > 1000 else 'Low'  
df['category'] = df['sales'].apply(categorize)  

保存为Excel多Sheet

使用pd.ExcelWriter保存多个DataFrame到同一Excel文件的不同Sheet。
示例:

with pd.ExcelWriter('output.xlsx') as writer:  df1.to_excel(writer, sheet_name='Sheet1')  df2.to_excel(writer, sheet_name='Sheet2')  

数据结构

Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据)。

  • Series 是一种类似于一维数组的对象,它由一组数据(各种 Numpy 数据类型)以及一组与之相关的数据标签(即索引)组成。

  • DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引)。

Pandas 是 Python 数据科学领域中不可或缺的工具之一,它的灵活性和强大的功能使得数据处理和分析变得更加简单和高效。

创建 Pandas Series

使用列表创建 Series:

import pandas as pd
s = pd.Series([1, 3, 5, 7, 9])

通过字典创建 Series(键为索引):

data = {'a': 10, 'b': 20, 'c': 30}
s = pd.Series(data)

指定自定义索引:

s = pd.Series([1, 2, 3], index=['x', 'y', 'z'])

使用 NumPy 数组创建:

import numpy as np
arr = np.array([1.1, 2.2, 3.3])
s = pd.Series(arr)

创建空 Series:

s = pd.Series(dtype=float)

基本操作

查看前 N 项:

s.head(3)

查看后 N 项:

s.tail(2)

获取索引:

s.index

获取值数组:

s.values

检查数据类型:

s.dtype

索引与选择

通过位置索引:

s[1]

通过标签索引:

s['a']

使用 iloc 按位置选择:

s.iloc[0:2]

使用 loc 按标签选择:

s.loc[['x', 'y']]

布尔索引筛选:

s[s > 2]

数据处理

计算描述性统计:

s.describe()

求和:

s.sum()

求平均值:

s.mean()

最大值:

s.max()

最小值:

s.min()

修改操作

修改单个值:

s['a'] = 100

批量修改值:

s[['a', 'b']] = [50, 60]

添加新元素:

s['d'] = 40

删除元素:

s.drop('a', inplace=True)

重命名索引:

s.ren
http://www.dtcms.com/a/286446.html

相关文章:

  • Chainlit + FasiAPI+ LlamaIndex 实现RAG(一)
  • 深入解析:短连接 vs 长连接 vs 短轮询 vs 长轮询
  • keil5使用技巧----keil-build-viewer.exe插件使用
  • 前端性能优化“核武器”:新一代图片格式(AVIF/WebP)与自动化优化流程实战
  • Ubuntu查看Docker容器
  • React智能Tooltip封装术:精准检测文本溢出,告别无效提示!
  • Linux下使用原始socket收发数据包
  • 4644电源管理芯片在微波射频组件中的技术优势与国产化实践
  • 《5分钟开发订单微服务!飞算JavaAI实战:IDEA插件安装→空指针修复→K8s部署全流程》
  • 高并发、高性能、高可用
  • LeetCode热题100【第4天】
  • openinstall九周年:聚焦安全防御,护航业务持续增长
  • 40+个常用的Linux指令——上
  • 【ACL系列论文写作指北19-科研中角色定位与自我认知】-如何在一篇论文中摆正自己的位置
  • 由于热爱,我选PGCE专家学习
  • 自动化测试面试中常见的问题
  • 从碎片设备到全球算力:Sollong引领AI时代的基础资源革命
  • Mysql定位慢查询
  • 内存泄漏系列专题分析之二十九:高通相机CamX--Android通用GPU内存分配和释放原理
  • 主流编程语言全景图:从Python到Rust的深度解析
  • 优先算法——专题九:链表
  • vc配置使用预编译
  • Android性能优化
  • 搜广推校招面经九十五
  • 【PTA数据结构 | C语言版】根据后序和中序遍历输出前序遍历
  • 更适合后端宝宝的前端三件套之CSS
  • 域名备案的注册地址怎么更改
  • 基于pandas,按日期时间排序,计算每个连续段的开始时间、结束时间,以及时长
  • Selenium自动化浏览器操作指南
  • Deep Multi-scale Convolutional Neural Network for Dynamic Scene Deblurring 论文阅读