【Python数据处理】-Pandas笔记

news2025/4/6 11:53:30

在这里插入图片描述

Python数据处理-Pandas笔记

📝 基本概念

Pandas是一个强大的Python数据处理库,它提供了高效的数据结构和数据分析工具,使数据处理变得简单而快速。本篇笔记将介绍Pandas中最常用的数据结构——Series和DataFrame,以及数据处理的各种操作和技巧。

📝 Series

(一)创建Series

Series是Pandas中的一维数组,类似于带有标签的NumPy数组。创建Series可以通过多种方式进行,以下是几种常用的方法:

✨ 使用列表创建Series

import pandas as pd

data = [10, 20, 30, 40, 50]
s = pd.Series(data)
print(s)

输出:

0    10
1    20
2    30
3    40
4    50
dtype: int64

✨ 使用NumPy数组创建Series

import pandas as pd
import numpy as np

data = np.array([10, 20, 30, 40, 50])
s = pd.Series(data)
print(s)

输出:

0    10
1    20
2    30
3    40
4    50
dtype: int32

✨ 使用字典创建Series

import pandas as pd

data = {'a': 10, 'b': 20, 'c': 30, 'd': 40, 'e': 50}
s = pd.Series(data)
print(s)

输出:

a    10
b    20
c    30
d    40
e    50
dtype: int64

(二)Series的简单操作

Series对象提供了许多方便的方法和属性来操作数据。以下是一些常用的操作:

🕛️访问数据

通过索引访问数据
import pandas as pd

data = [10, 20, 30, 40, 50]
s1 = pd.Series(data)
print(s1)
# 通过索引访问数据
print(s1[0])  # 输出 10
print(s1[2])  # 输出 30

运行结果:
在这里插入图片描述

通过标签访问数据
import pandas as pd
data = [10, 20, 30, 40, 50]
s2 = pd.Series(data,index = ['a','b','c','d','e'])
print(s2)

# 通过索引访问数据
print(s2['a'])  # 输出 10
print(s2['c'])  # 输出 30

运行结果:
在这里插入图片描述

🕛️ 切片操作

import pandas as pd

data = [10, 20, 30, 40, 50]
s = pd.Series(data)

# 切片操作
print(s[1:4])  # 输出 [20, 30, 40]

运行结果
在这里插入图片描述

import pandas as pd

data = [10, 20, 30, 40, 50]
s = pd.Series(data,index = ['a','b','c','d','e'])# 修改

# 切片操作
print(s['b':'d'])  # 输出 [20, 30, 40]

运行结果
在这里插入图片描述

🕛️ 矢量化操作

import pandas as pd

data = [10, 20, 30, 40, 50]
s = pd.Series(data)

# 矢量化操作
print(s * 2)

输出:

0     20
1     40
2     60
3     80
4    100
dtype: int64

📝DataFrame

🏘️ 创建方式

DataFrame是Pandas中的二维数据结构,可以看作是由多个Series组成的表格。创建DataFrame的方法有很多种,下面介绍几种常见的方式:

✨ 使用列表创建DataFrame

import pandas as pd

data = [['Alice', 25], ['Bob', 30], ['Charlie', 35]]
df = pd.DataFrame(data, columns=['Name', 'Age'])
print(df)

输出:

      Name  Age
0    Alice   25
1      Bob   30
2  Charlie   35

✨使用字典创建DataFrame

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)

输出:

      Name  Age
0    Alice   25
1      Bob   30
2  Charlie   35

✨使用NumPy数组创建DataFrame

import pandas as pd
import numpy as np

data = np.array([['Alice', 25], ['Bob', 30], ['Charlie', 35]])
df = pd.DataFrame(data, columns=['Name', 'Age'])
print(df)

输出:

      Name Age
0    Alice  25
1      Bob  30
2  Charlie  35

☑️ 数据选取

数据选取是对DataFrame中的数据进行访问和操作的关键步骤。下面介绍一些常用的数据选取方法。

🛠️ [[]]

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 选取多列数据
print(df[['Name', 'Age']])

输出:

      Name  Age
0    Alice   25
1      Bob   30
2  Charlie   35

🛠️ copy()

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 复制DataFrame
df_copy = df.copy()

🛠️ 列操作

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 添加新列
df['Gender'] = ['Female', 'Male', 'Male']

# 删除列
df = df.drop('Gender', axis=1)

🛠️ 行操作

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 选取行数据
print(df.loc[0])  # 输出第一行数据
print(df.loc[1:2])  # 输出第二行到第三行的数据

🛠️ 行-列

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 选取指定行列的数据
print(df.loc[0, 'Name'])  # 输出第一行的Name列数据
print(df.loc[1:2, 'Name'])  # 输出第二行到第三行的Name列数据

🛠️ 数据筛选

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 根据条件筛选数据
filtered_df = df[df['Age'] > 30]
print(filtered_df)

🔍 加载数据

在实际的数据处理中,我们常常需要从外部文件中加载数据到DataFrame中进行分析和处理。Pandas提供了多种方法来加载不同格式的数据,下面介绍常用的几种方式。

📉 Txt

import pandas as pd

# 从txt文件加载数据
df = pd.read_csv('data.txt', sep='\t')
print(df)

📉 Csv

import pandas as pd

# 从csv文件加载数据
df = pd.read_csv('data.csv')
print(df)

📉 Excel

import pandas as pd

# 从Excel文件加载数据
df = pd.read_excel('data.xlsx')
print(df)

👨‍💻 排序与合并

数据排序和合并是数据处理中常用的操作之一。下面介绍几种常见的排序和合并方法。

✨ Series排序

import pandas as pd

data = [10, 5, 8, 3, 12]
s = pd.Series(data)

# Series排序
sorted_s = s.sort_values()
print(sorted_s)

✨ DataFrame排序

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# DataFrame按某一列排序
sorted_df = df.sort_values('Age')
print(sorted_df)

✨ Rank

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 30]}
df = pd.DataFrame(data)

# 计算DataFrame的排名
ranked_df = df.rank()
print(ranked_df)

✨ merge(按列匹配合并)

import pandas as pd

data1 = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
data2 = {'Name': ['Alice', 'David', 'Charlie'], 'Salary': [5000, 6000, 7000]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 按列匹配合并两个DataFrame
merged_df = pd.merge(df1, df2, on='Name')
print(merged_df)

✨ concat(数据的拼接)

import pandas as pd

data1 = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
data2 = {'Name': ['Charlie', 'David'], 'Age': [35, 40]}
df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 拼接两个DataFrame
concatenated_df = pd.concat([df1, df2])
print(concatenated_df)

📊 数据汇总

在数据处理过程中,我们经常需要对数据进行汇总和统计。下面介绍几种常用的数据汇总方法。

🚀 特殊值(info, describe)

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
df = pd.DataFrame(data)

# 查看DataFrame的基本信息
print(df.info())

# 查看DataFrame的统计信息
print(df.describe())

🚀 分组统计

import pandas as pd

data = {'Name': ['Alice', 'Bob', 'Charlie', 'Alice', 'Bob', 'Charlie'],
        'Age': [25, 30, 35, 40, 45, 50],
        'Salary': [5000, 6000, 7000, 8000, 9000, 10000]}
df = pd.DataFrame(data)

# 按Name列进行分组统计
grouped_df = df.groupby('Name').mean()
print(grouped_df)

⏰ 时间序列

Pandas提供了强大的时间序列处理功能,方便对时间相关的数据进行分析和处理。下面介绍一些时间序列的常用操作。

🕛️ 初始化时间序列

import pandas as pd

# 初始化时间序列
dates = pd.date_range(start='2021-01-01', periods=10, freq='D')
print(dates)

🕛️ 时间索引

import pandas as pd

# 创建带有时间索引的DataFrame
dates = pd.date_range(start='2021-01-01', periods=10, freq='D')
data = {'Value': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
df = pd.DataFrame(data, index=dates)
print(df)

🕛️ 重采样

import pandas as pd

# 创建带有时间索引的DataFrame
dates = pd.date_range(start='2021-01-01', periods=10, freq='D')
data = {'Value': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
df = pd.DataFrame(data, index=dates)

# 对时间序列进行重采样
resampled_df = df.resample('W').sum()
print(resampled_df)

📚 参考资料

  • Pandas官方文档
  • Pandas User Guide

⭐️希望本篇文章对你有所帮助。

⭐️如果你有任何问题或疑惑,请随时向提问。

⭐️感谢阅读!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717027.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

48. Compose自定义绘制日历-2

这次的实现方式完全改了,感觉最初的想法对切换周历模式比较难实现, 现在是把月历和周历 同时生成,动态切换。 待优化的:切换的时候 闪动没那么丝滑。 还有另一种实现方案 : 只生成当前月份 和前后月份三组数据&#x…

HTML5网页设计小案例:逸仙园茶馆招聘启事网页的设计

前言: 今天分享的逸仙园茶馆招聘启事网页的设计是本专栏的第一篇博客,也是我学习了几个小时知识点后写的实战小案例。我有个想法,想以逸仙园茶馆为灵感不断优化改进代码与想法设计一套与茶叶有关的的精美网页 逸仙园茶馆招聘启事网页的设计案…

【动态规划上分复盘】这是你熟悉的地下城游戏吗?

欢迎 前言一、动态规划五步曲二、地下城游戏题目分析思路:动态规划具体代码如下 总结 前言 本文讲解关于动态规划思路的两道题目。 一、动态规划五步曲 1.确定状态表示(确定dp数组的含义)2.确定状态转移方程(确定dp的递推公式&a…

NumPy实现逻辑回归

说明:数据集 ex2data1.txt是吴恩达机器学习的作业的数据集。 # -*-coding:utf-8-*- import matplotlib.pyplot as plt import numpy as np import pandas as pdclass Logitstic_Regression:def __init__(self, learning_rate0.01, num_iterations75000, threshold0.…

# 技术架构演进之路

技术架构演进之路 文章目录 技术架构演进之路单机架构应用数据分离架构应用服务集群架构读写分离架构冷热分离架构垂直分库架构微服务架构容器编排技术互联网架构 单机架构 简介应用和服务公用一台服务器出现原因出现在互联网早期,访问量比较小,单机足以满足需求.架构工作原理…

本地新项目推送至gitlab仓库

1. gitlab上新建一个空白项目 gitlab上点击new project按钮,新建一个项目 新建空白项目 项目名称与本地新建项目名称相同,其余根据具体需要选择 2. 初始化本地仓库并commit项目 进入本地项目根目录下,右击 git bash here打开命令窗口 初始化…

java代码审查过关的一次总结

**1.for循环中的逻辑都抽出一个方法并且把重要逻辑抽出一个方法 2.参数比较多合并成一个对象 3.避免没必要的if else 例如if判断能直接return就return,避免没必要的else 4.检查代码中是否包含适当的注释,解释代码的目的、实现细节和注意事项。 5.代码格式和命名规…

百炼智能发布垂直模型“爱迪生”,B2B行业的AIGC大潮来了

(图片来源:Pixels) AIGC终于来到B2B行业,企业服务AGI时代已拉开帷幕。 数科星球原创 作者丨苑晶 编辑丨大兔 百炼智能是一家专注B2B行业的智能营销企业。在过去,该行业经历了大数据、人工智能时代的洗礼。随着行业对数…

jupyter中如何管理内核

1、jupyter notebook如何和已有的虚拟环境关联起来: 如果在电脑中某个conda的虚拟环境中已经安装了jupyter,其他虚拟环境想要作为内核在jupyter中使用,分为两个步骤: 第一步:在没有jupyter的环境中下载ipykernel&…

E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

T:what Y:why W:how Y $ sudo apt-get install ros-noetic-gazebo-ros 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 有一些软件包无法被安装。如果您用的是 unstable 发行版&#xff0…

可信数据库大会,不见不散!

由中国信息通信研究院、中国通信标准化协会指导,中国通信标准化协会大数据技术标准推进委员会(CCSA TC601)、InfoQ 极客传媒联合主办的 2023 可信数据库发展大会将于今日在北京国际会议中心隆重召开。 本届大会以“自主 创新 引领”为主题…

【线段树】P6492 [COCI2010-2011#6] STEP

P6492 [COCI2010-2011#6] STEP - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意&#xff1a; 思路&#xff1a; 要维护区间最长子串&#xff0c;就需要维护左起最长子串和右起最长子串 要维护这两者&#xff0c;就得维护区间两端的种类 Code&#xff1a; #include <…

Spark数据倾斜优化-AQE Skewed Join

AQE处理SkewedJoin的原理 Spark Adaptive Query Execution &#xff0c; 简称 Spark AQE&#xff0c;总体思想是动态优化和修改 stage 的物理执行计划。利用执行结束的上游 stage 的统计信息&#xff08;主要是数据量和记录数&#xff09;&#xff0c;来优化下游 stage 的物理…

记一次自建靶场域渗透过程

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 环境搭建02 外网突破03 权限提升并维持&#xff08;1&#xff09;获取 meterpreter 会话&#xff08;2&#xff09;尝试开启远程桌面&#xff08;3&#xff09;Msf 派生 Cobalt Strike shell&#…

TinyStories: How Small Can Language Models Be and Still Speak Coherent English?

本文是LLM系列的文章之一&#xff0c;针对《TinyStories: How Small Can Language Models Be and Still Speak Coherent English?》的翻译。 TinyStories&#xff1a;语言模型能有多小&#xff0c;还能说连贯的英语&#xff1f; 摘要1 引言2 TinyStories数据集的描述2.1 Tiny…

<td>标签内的文字内容换行显示

修改前&#xff1a; 修改后&#xff1a; 代码&#xff1a; table tr td{ word-WRAP: break-word }

CI-持续集成 — 软件工业“流水线”技术实现

1 概述 持续集成&#xff08;Continuous Integration&#xff09;是一种软件开发实践。在本系列文章的前一章节已经对其背景及理论体系进行了介绍。本小节则承接前面提出的理论构想进行具体的技术实现。 《Google软件测试之道》: "每天&#xff0c;Google都要测试和发…

(模拟) 463. 岛屿的周长 ——【Leetcode每日一题】

❓ 463. 岛屿的周长 难度&#xff1a;简单 给定一个 row x col 的二维网格地图 grid &#xff0c;其中&#xff1a;grid[i][j] 1 表示陆地&#xff0c;grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连&#xff08;对角线方向不相连&#xff09;。整个网格被水完…

前端Vue自定义可自由滚动精美tabs选项卡标签栏标题栏 可设置背景颜色,

前端Vue自定义可自由滚动精美tabs选项卡标签栏标题栏 可设置背景颜色&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13313 效果图如下&#xff1a; # cc-scrollTag #### 使用方法 使用方法 <!-- tabChange: tab选…

Vue指令--v-bind、v-model、v-on

常见指令--v-bind/model/on 指令&#xff1a;HTML标签中带有v-前缀的特殊属性&#xff0c;不同指令具有不同含义。例如&#xff1a;v-if&#xff0c;v-for..常见指令 指令 作用 v-bind为HTML标签绑定属性值&#xff0c;如设置href、css样式等v-model在表单元素上创建双向数据…