Python的pandas库基本操作(数据分析)

news2024/12/23 23:09:54

一、安装,导入

1、安装

使用包管理器安装:

pip3 install pandas

2、导入

import pandas as pd

as是为了方便引用起的别名

二、DateFrame

在Pandas库中,DataFrame 是一种非常重要的数据结构,它提供了一种灵活的方式来存储和操作结构化数据。DataFrame 类似于Excel中的表格,具有行和列,其中每列可以是不同的数据类型(数值、字符串、布尔值等)。

1、创建DateFrame

import pandas as pd  
  
# 从字典创建 DataFrame  
data = {'Name': ['Alice', 'Bob', 'Charlie'],  
        'Age': [25, 30, 35],  
        'City': ['New York', 'Los Angeles', 'Chicago']}  
df = pd.DataFrame(data)  
  
# 从列表的字典创建 DataFrame  
data_list = [{'Name': 'Alice', 'Age': 25, 'City': 'New York'},  
             {'Name': 'Bob', 'Age': 30, 'City': 'Los Angeles'},  
             {'Name': 'Charlie', 'Age': 35, 'City': 'Chicago'}]  
df_list = pd.DataFrame(data_list)

两个对象存储情况:

 Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago


      Name  Age         City
0    Alice   25     New York
1      Bob   30  Los Angeles
2  Charlie   35      Chicago

2、查看 DateFrame

# 查看前几行  
print(df.head())  
  
# 查看后几行  
print(df.tail())  
  
# 查看数据的基本信息  
print(df.info())  
  
# 查看数值列的统计信息  
print(df.describe())

head和tail括号内都可以写数值指定要前几行。默认是5行。

3、选择数据

你可以通过列名、行标签(索引)或条件来选择数据。

# 选择单列  
print(df['Name'])  
  
# 选择多列  
print(df[['Name', 'Age']])  
  
# 通过行标签选择(假设设置了索引)  
# df.set_index('Name', inplace=True)  
# print(df.loc['Alice'])  
  
# 通过条件选择  
print(df[df['Age'] > 30])

当你使用 inplace=True 参数时,这个操作会直接在原DataFrame上进行,而不会返回一个新的DataFrame。之后,你可以使用 .loc[] 索引器来根据新的索引值选择数据。

可以通过设置index属性自定义输出的顺序。

app=data['apples']
#自定义输出序列下标顺序
app=pd.Series(app,index=[0,2,1,3])

执行后,会根据索引值的0213顺序赋值给app. 

4、添加或删除数据

# 添加新列  
df = df.assign(Salary=pd.Series([50000, 60000, 70000]))  
  
# 删除列  
df = df.drop(columns=['City'])  
  
# 删除行(通过索引或条件)  
# df = df.drop(index=0)  # 删除第一行  
# df = df[df['Age'] != 30]  # 删除 Age 为 30 的行

5、数据处理

Pandas 提供了丰富的数据处理功能,如分组(groupby)、聚合(aggregate)、合并(merge)、连接(join)等。

# 分组和聚合  
grouped = df.groupby('City').agg({'Age': 'mean', 'Salary': 'sum'})  
  
# 合并两个 DataFrame  
df1 = pd.DataFrame({'Key': ['K0', 'K1', 'K2', 'K3'],  
                    'A': ['A0', 'A1', 'A2', 'A3']})  
df2 = pd.DataFrame({'Key': ['K0', 'K1', 'K2', 'K3'],  
                    'B': ['B0', 'B1', 'B2', 'B3']})  
merged = pd.merge(df1, df2, on='Key')

6、导出数据

你可以将 DataFrame 导出为CSV、Excel等格式的文件。

# 导出为CSV文件  
df.to_csv('output.csv', index=False)  
  
# 导出为Excel文件  
df.to_excel('output.xlsx', index=False)

将index设置为false可以去掉下标。

7、其他操作

(1)转置

print(date.T)

使用DateFrame对象打点调用T可以将矩阵进行转置,也就是将行转为列,列转为行。

(2)排序


#根据内容排序,ascending=False是降序,默认升序
print(date.sort_values(by='A',ascending=False))

也可以根据索引排序,就是使用date.sort_values。

三、时间序列和Resample函数

时间序列数据在Pandas中通常存储为DataFrameSeries对象,其中时间戳作为索引。这种结构使得Pandas能够轻松地对数据进行时间相关的操作,如按时间筛选、滚动窗口计算、时间差计算等。

resample()函数是Pandas时间序列对象(DataFrameSeries)的一个方法,它允许用户按照指定的频率对数据进行重新采样。重新采样的过程通常包括两个步骤:首先,根据新的频率对数据进行分组;其次,对每个分组应用聚合函数(如求和、平均、最大值、最小值等)来计算新的值。

# 假设df是一个时间序列DataFrame,时间戳作为索引  
# 对数据进行按月重新采样,并计算每个月的平均值  
monthly_mean = df.resample('M').mean()

参数:

  • rule:字符串或数字,指定新的采样频率。
  • on:可选参数,指定用于重新采样的列名(如果DataFrame的索引不是时间戳)。
  • closed:可选参数,指定区间的开闭性,'left''right'或None(默认为'right')。
  • label:可选参数,指定标签的位置,'left''right''both'(默认为'right'),或者是一个时间戳数组。
  • convention:可选参数,指定'start'、'end'或'e'(默认为'end'),用于确定在区间边界上的值的归属。
  • loffset:可选参数,用于调整标签的位置。
  • base:可选参数,用于指定时间间隔的起始点(0到23之间的整数)。
  • howaggregate:可选参数,指定应用于每个分组的聚合函数(如'mean'、'sum'等)。在较新版本的Pandas中,建议使用aggregate参数。

常用的resample聚合函数 

  1. mean():计算每个分组的平均值。这是时间序列数据分析中最常用的聚合函数之一,用于获取数据的平均水平。

  2. sum():计算每个分组的总和。这个函数可以用于计算某个时间段内的累积值。

  3. count():计算每个分组中非空(非NA/null)值的数量。这个函数可以用于检查数据的完整性或缺失情况。

  4. first():获取每个分组的第一个值。这个函数可以用于提取时间序列数据中的起始点。

  5. last():获取每个分组的最后一个值。这个函数可以用于提取时间序列数据中的结束点。

  6. min():计算每个分组的最小值。这个函数可以用于识别数据中的最低点或阈值。

  7. max():计算每个分组的最大值。这个函数可以用于识别数据中的最高点或峰值。

  8. ohlc():计算每个分组的开盘价(first)、最高价(max)、最低价(min)和收盘价(last)。这个函数通常用于金融时间序列数据的分析。

  9. prod():计算每个分组的乘积。这个函数可以用于计算某个时间段内数据的累积效应。

  10. std():计算每个分组的标准差。这个函数用于衡量数据的离散程度或波动性。

  11. var():计算每个分组的方差。方差是标准差的平方,同样用于衡量数据的离散程度。

  12. median():计算每个分组的中位数。中位数是一种位置平均数,对于偏态分布的数据具有较好的代表性。

  13. quantile():计算每个分组的指定分位数。这个函数允许用户指定一个介于0和1之间的数值作为分位数,以获取数据的不同分位点。

  14. apply():应用一个自定义的函数到每个分组。这个函数提供了极大的灵活性,允许用户根据自己的需求编写复杂的聚合逻辑。

四、plot快速可视化

 plot可视化需要安装一个matplotlib包

使用包管理器安装matplotlib

pip3 install matplotlib

案例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#单样本
df=np.random.rand(1000)
df=pd.DataFrame(df,index=pd.date_range('20210101',periods=1000))
print(df)
df.plot()
plt.show()

df是一个新的DataFrame,然后设置一个新的索引,这个索引是一个日期范围,从'20210101'开始,包含1000个日期。plot 方法实际上是Pandas对Matplotlib绘图库的封装,为用户提供了一个简洁的接口来快速生成图表。plt.show是展示出来。

展示图表:

 五、读取与存储(pandas)

读取是pandas打点调用‘’read_格式‘’函数,读什么格式的文件就用什么格式。

案例:

读取csv的文件:

pd.read_csv('txt.csv')

以下是一些Pandas可读取的主要文件类型:

  1. CSV(Comma-Separated Values)文件
    • CSV是一种常见的文本文件格式,用于存储表格数据。
    • 每行表示一条记录,字段之间用逗号分隔。
    • Pandas使用read_csv函数读取CSV文件。
  2. Excel文件
    • Excel是一种常见的电子表格文件格式,通常包含多个工作表。
    • Pandas使用read_excel函数读取Excel文件,并可以指定要读取的工作表名称或索引。
  3. JSON(JavaScript Object Notation)文件
    • JSON是一种轻量级的数据交换格式,易于阅读和编写。
    • Pandas使用read_json函数读取JSON文件。
  4. SQL数据库
    • Pandas支持从SQL数据库中读取数据,需要使用SQLAlchemy库来创建数据库连接。
    • 使用read_sqlread_sql_table函数从SQL数据库中读取数据。
  5. Parquet文件
    • Parquet是一种高效的列式存储格式,适用于大规模数据集。
    • Pandas使用read_parquet函数读取Parquet文件。
  6. HDF5文件
    • HDF5是一种用于存储大量数据的文件格式,支持分层数据存储。
    • Pandas使用read_hdf函数读取HDF5文件,需要指定数据集的键(key)。
  7. Feather文件
    • Feather是一种轻量级的二进制文件格式,适用于快速读写。
    • Pandas使用read_feather函数读取Feather文件。
  8. Pickle文件
    • Pickle是Python的一种序列化格式,用于存储Python对象。
    • Pandas使用read_pickle函数读取Pickle文件。
  9. HTML文件
    • Pandas可以读取HTML文件中的表格数据。
    • 使用read_html函数读取HTML文件,该函数返回一个DataFrame列表,其中每个DataFrame对应HTML文件中的一个表格。
  10. TXT文件
    • 虽然Pandas没有专门为TXT文件设计的读取函数,但可以使用read_csv函数通过指定适当的分隔符来读取TXT文件。如果TXT文件的字段是用制表符(\t)分隔的,可以使用sep='\t'参数。

案例2:

向Excel写入:

data.to_excel('excel.xlsx',sheet_name='a')

上述代码实现了创建sheet页:a,并向excel.xlsx文件输入data数据。若想追加sheet页:

with pd.ExcelWriter('writerExcel.xlsx',mode='a',engine='openpyxl') as writer:
    data.to_excel(writer,sheet_name='d')

需要在打开文件时设置属性mode值为:a表示追加

engine参数用于指定用于写入Excel文件的底层引擎。Pandas支持多种引擎来处理Excel文件,但最常用的引擎是openpyxl(用于.xlsx文件)和xlsxwriter。这两个引擎都提供了丰富的功能来创建和修改Excel文件。

  • openpyxl:这是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的Python库。它支持对Excel文件的读取和写入,包括公式、图表、图像等复杂元素。

  • xlsxwriter:这是一个Python库,用于创建Excel .xlsx文件。它提供了丰富的功能来格式化单元格、添加图表、创建工作表等。

同时添加多个sheet页:

with pd.ExcelWriter('writerExcel.xlsx') as writer:
    data.to_excel(writer,sheet_name='a')
    data.to_excel(writer, sheet_name='b')
    data.to_excel(writer, sheet_name='c')

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

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

相关文章

Python数据分析教程09:层次分析法的方根法和求和法的实现

目录 1 求和法计算权重的方法以及代码示例 1.1 理论原理 1.2 代码实现 2 方根法计算权重的方法以及代码示例 2.1 理论方法 2.2 代码实现 感谢B站博主的视频:https://www.bilibili.com/video/BV1At421E7jE 作者详细推导了方根法和求和法两类方案的计算过程,有兴趣的同学…

若依项目搭建(黑马经验)

欢迎你搜索和了解到若依,这个项目是从黑马课程的一个实践,更多的项目经历和平台搭建期待着我们的共同学习! 关于若依 若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 前端采用Vue、Element UI。后端采用Sprin…

初识Mysql/备份,基础指令

1,MySQL登录指令: mysql -h 127.0.0.1 -P3306 -u -p 其中,-h指明登录部署了mysql服务的主机 -P指明要访问的端口号, -u指明登录用户 -p输入密码 2,数据库基础 mysql:表示的是客户端 mysqld&…

大学生课程设计报告--基于JavaGUI的贪吃蛇

前言 ​ 贪吃蛇游戏是一个基础且经典的视频游戏,它适合作为学习编程的人进行一些更深入的学习,可以更加了解关于循环,函数的使用,以及面向对象是如何应用到实际项目中的; ​ 不仅如此,贪吃蛇游戏的规则在思考后可以拆分,有利于学生将更多精力去设计游戏的核心逻辑,而…

​ ​视觉任务大一统!图像生成,编辑,翻译三合一!全能视觉助手PixWizard来袭!

文章链接:https://arxiv.org/pdf/2409.15278 github链接:https://github.com/AFeng-x/PixWizard 亮点直击 任务统一:针对视觉任务的多样性,提出将其框架化为图像到图像的转换问题,并通过后处理将生成的可视化效果转化…

【论文速看】DL最新进展20241009-图像生成、多模态、医学扩散模型、行人重识别

目录 【图像生成】【多模态】【医学扩散模型】【行人重识别】 【图像生成】 [2024] CAR: Controllable Autoregressive Modeling for Visual Generation 论文链接:https://arxiv.org/pdf/2410.04671 代码链接:https://github.com/MiracleDance/CAR 可控…

windows C++-避免死锁(上)

下面通过“哲学家就餐问题”说明了如何使用 concurrency::join 类来避免在应用程序中发生死锁。 在软件应用中,如果两个或多个进程分别留有资源,且相互等待另一进程释放其他资源,就会发生死锁。 “哲学家就餐问题”是在多个并发进程之间共享…

掌握甘特图,没有Excel也能轻松制作的技巧

甘特图是项目管理中常用工具,由亨利甘特发明。不擅长Excel者可用ZohoProjects等软件创建甘特图,其直观展示项目时间和任务,支持实时协作、工时管理等功能,广泛应用于各领域项目管理。 一、甘特图的由来 甘特图最初是由工程师和管…

反射在Go语言中的具体应用场景

在Go语言中,反射(Reflection)是一种强大的特性,它允许程序在运行时检查、修改和操作变量的类型信息。 尽管反射在性能上通常不如直接操作,但它在某些特定场景下非常有用。 反射在Go语言中的具体应用场景:…

YOLO11模型推理 | 目标检测与跟踪 | 实例分割 | 关键点估计 | OBB旋转目标检测

前言 本文分享YOLO11的模型推理,检测任务包括物体分类、目标检测与跟踪、实例分割 、关键点估计、旋转目标检测等。 首先安装YOLO11 官方默认安装方式 通过运行 pip install ultralytics 来快速安装 Ultralytics 包 安装要求: Python 版本要求&…

leetcode125:验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s,如果它是 回文串 ,返回 true ;否则&#…

赋能新时代,智象未来(HiDream.ai)推动智能服务深度融入生活

在人工智能领域的最新发展中,智象未来科技有限公司(简称“智象未来(HiDream.ai)”以其卓越的技术创新和深厚的行业积累脱颖而出,一跃成为多模态生成式人工智能技术的领军者。该公司致力于开发和优化视觉多模态基础模型…

天海一体,遨游双卫星智能终端扬帆5G智慧海洋

海洋面积占地球表面的70%以上,世界贸易的90%左右由国际海运行业承运。但是,信号覆盖不均、通信延迟高、定位精度不足等问题,严重制约了海洋作业的效率与安全。智慧海洋,通信先行,AORO M5-5G双卫星智能终端应时代需求而…

MySQL从0到1基础语法笔记(下)

博客主页:誓则盟约系列专栏:Java Web关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 多表问题分析: 部门数据可以直接删除,然后还有部分员工…

为了加速上市,独角兽SHEIN的神秘创始人终于要露脸了?

神秘独角兽SHEIN在假期中迎来一个特殊新闻,《华尔街日报》、英国《金融时报》等媒体都报道称,SHEIN创始人许仰天最近先后前往美国和伦敦会见投资者,为其伦敦上市做准备。 (图源:英国《金融时报》官网) 这条…

使用fastjson解析json格式数据

在java里面无法直接解析JSON格式的字符串或文本&#xff0c;这时候我们就需要一个解析json格式的库&#xff0c;我们这里用fastjson,接下来的代码操作如下&#xff1a; 1、导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson&…

【阿克曼odom里程计解算】:从下位机到上位机,从原理到代码实现

前言 本文将从阿克曼的里程计计算原理出发&#xff0c;讲解下位机STM32如何对电机编码器数据进行整合计算&#xff0c;再通过串口进行上下位机进行数据转发&#xff0c;最终在Linux板端对下位机发送来的数据进行积分计算并最终通过ROS的odometry数据进行全局广播。本文使用到的…

JavaScript 数组简单学习

目录 1. 数组 1.1 介绍 1.2 基本使用 1.2.1 声明语法 1.2.2 取值语法 1.2.3 术语 1.3 案例 1. 数组 1.1 介绍 1.2 基本使用 1.2.1 声明语法 1.2.2 取值语法 1.2.3 术语 1.3 案例

自动化测试selenium篇(四)

1.定位一组元素 1.0 小问题 当运行测试代码程序需要跳转到页面&#xff0c;由于没有授权&#xff0c;导致页面不能成功跳转&#xff0c;且出现下面的情况&#xff1a; 步骤一&#xff1a;进入到idea&#xff0c;点击设置&#xff0c;如下所示&#xff1a; 进行上图操作之后&am…

图为大模型一体机的优秀落地案例:图为语伴

随着客户对即时、准确信息和解决方案的期望不断提升&#xff0c;企业面临着处理大量客户咨询、减少人力成本、提高服务效率等多重挑战。 而图为大模型一体机的诞生&#xff0c;就是为了应对传统的人工客服在处理客户咨询时&#xff0c;其产生的数据如聊天记录、通话记录等&…