当前位置: 首页 > 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.lryc.cn/news/592170.html

相关文章:

  • GISBox切片器技术解析:RVT模型到3DTiles瓦片的高性能转换方案
  • elasticsearch+logstash+kibana+filebeat实现niginx日志收集(未过滤日志内容)
  • 使用 C++ 和 OpenCV 进行表面划痕检测
  • 算法-动态规划
  • Paimon对比基于消息队列(如Kafka)的传统实时数仓方案的优势
  • 【动态规划 解析】
  • centos7安装MySQL8.4手册
  • 【PTA数据结构 | C语言版】二叉堆的快速建堆操作
  • Vue常见指令
  • Webpack 项目优化详解
  • mac mlx大模型框架的安装和使用
  • LangChain 源码剖析(三):连接提示词与大语言模型的核心纽带——LLMChain
  • FastAdmin后台登录地址变更原理与手动修改方法-后台入口机制原理解析-优雅草卓伊凡
  • 反序列化漏洞1-PHP序列化基础概念(0基础超详细)
  • 【C# in .NET】18. 探秘接口:契约精神
  • ARM64高速缓存,内存属性及MAIR配置
  • MariaDB 10.4.34 安装配置文档(Windows 版)
  • 性能远超Spring Cloud Gateway!Apache ShenYu如何重新定义API网关!
  • uniapp微信小程序 实现swiper与按钮实现上下联动
  • 网页的性能优化,以及具体的应用场景
  • 工业ESD防静电无尘净化棉签擦拭棒:精密制造领域的清洁守护者!
  • bash-completion未安装或未启用
  • 飞书,正在成为中国AI制造故事的新阵地
  • 【数据可视化-67】基于pyecharts的航空安全深度剖析:坠毁航班数据集可视化分析
  • 使用python的读取xml文件,简单的处理成元组数组
  • 如何防止GitHub上的敏感信息被泄漏?
  • Redis-集群与分区
  • Redis——BigKey
  • web开发基础(CSS)
  • 【甲烷数据集】Sentinel-5P 卫星获取的全球甲烷数据集-TROPOMI L2 CH₄