Python——Pandas(第一讲)

文章目录

  • 安装
    • 设定系统环境
  • Series对象创建
  • DataFrame对象创建
  • Pandas中的Index
  • 导入Excel文件
  • 导入csv文件
  • 导入txt文件
  • 保存数据
    • 保存数据至外部文件
  • 了解数据
    • head()与 tail()
    • info()
    • shape
    • describe()
  • 列操作
    • 修改变量列
    • 筛选变量列
    • 删除变量列
    • 添加变量列
      • 根据新数据添加
      • 根据原数据添加

Pandas 是一个开源的 Python 数据分析库,它提供了快速、灵活和富有表达力的数据结构,旨在使“关系”或“标签”数据的处理既简单又直观。它旨在成为高级数据分析和操作的高级构建块。Pandas 的名字来源于“panel data”(面板数据)和“python data analysis”(Python 数据分析)的缩写。
Pandas已经成为了Python 进行数据分析和挖掘时的数据基础平台和事实上的工业准。
使用 Pandas 包完成数据读入、数据清理、数据准备、图表呈现等工作,为继续学习数据建模和数据挖掘打下坚实基础。

安装

pip install pandas

设定系统环境

import pandas as pd
#设定自由列表输出最多为 10 行(可以根据需要去设定)
pd.options.display.max_rows = 10
# 显示当前 Pandas 版本号
pd.__version__

Series对象创建

Series:一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象,是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series 对象。用值列表生成 Series 时,Pandas 默认自动生成整数索引

【示例】使用列表创建

data=pd.Series([4,3,5,6,1])
data
'''
0    4
1    3
2    5
3    6
4    1
dtype: int64
'''

pandas中两个重要的属性 values 和index,**values:**是Series对象的原始数据。**index:**对应了Series对象的索引对象
【示例】属性values和index

data.values  # array([4, 3, 5, 6, 1])
data.index   # RangeIndex(start=0, stop=5, step=1)

【示例】指定index

data=pd.Series([5,4,6,3,1],index=['one','two','three','four','five'])
'''
one      5
two      4
three    6
four     3
five     1
dtype: int64
'''

【示例】使用list列表指定index

data=pd.Series([4,3,2,1],index=list('abcd'))
'''
a    4
b    3
c    2
d    1
dtype: int64
'''

【示例】传入字典创建,默认将key作为index

population_dict={'sh':2800,'bj':3000,'gz':1500,'sz':1200}
population_series=pd.Series(population_dict)
'''
sh    2800
bj    3000
gz    1500
sz    1200
dtype: int64
'''

【示例】如果既用了字典创建了Series对象,又显示的指定了index,如果key不存在,则值为NaN

#如果存在取交集
sub_series=pd.Series(population_dict,index=['bj','sh'])
#如果不存在则值为NaN
sub_series=pd.Series(population_dict,index=['bj','xa'])
'''
bj    3000.0
xa       NaN
dtype: float64
'''

【示例】将一个标量与index对象一起传入创建

data=pd.Series(10,index=list('abcd'))
'''
a    10
b    10
c    10
d    10
dtype: int64
'''

DataFrame对象创建

DataFrame 是 Pandas 中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame 即有行索引也有列索引,可以被看做是由 Series 组成的字典。将两个series对象作为dict的value传入,就可以创建一个DataFrame对象。
【示例】创建DataFrame对象

population_dict={'beijing':3000,'shanghai':1200,'guangzhou':1800}
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
population_series=pd.Series(population_dict)
area_series=pd.Series(area_dict)
citys=pd.DataFrame({'area':area_series,'population':population_series})
print(citys)
'''area  population
beijing	     300	    3000
shanghai	 180	    1200
guangzhou	 200	    1800
'''

【示例】values index columns属性

citys.index   # Index(['beijing', 'shanghai', 'guangzhou'],dtype='object')
citys.values  
'''
array([[ 300, 3000],[ 180, 1200],[ 200, 1800]])
'''
citys.columns  # Index(['area', 'population'], dtype='object')

【示例】列表创建

population_dict={'beijing':3000,'shanghai':1200,'guangzhou':1800}
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
data=pd.DataFrame([population_dict,area_dict])
#添加index属性
data=pd.DataFrame([population_dict,area_dict],index=['population','area'])
'''beijing  shanghai  guangzhou
population     3000      1200       1800
area            300       180        200
'''

【示例】索引columns的使用

population_series=pd.Series(population_dict)
pd.DataFrame(population_series,columns=['population'])
'''population
beijing	         3000
shanghai	     1200
guangzhou	     1800
'''

【示例】二维数组指定columns和index创建

pd.DataFrame(np.random.randint(0,10(3,2)),columns=list('ab'),index=list('efg'))
'''a	b
e	2	0
f	2	5
g	7	8
'''

Pandas中的Index

Pandas中的Index,其实是不可变的一维数组

ind=pd.Index([3,4,5,6,7])  # Index([3, 4, 5, 6, 7], dtype='int64')
#根据下标获取值
ind[3]   # np.int64(6)
#切片获取值
ind[::2]  # Index([3, 5, 7], dtype='int64')
#有ndim shap dtype size属性
#但不能进行修改
ind[3]=20  # TypeError: Index does not support mutable operations

导入Excel文件

使用read_excel()方法导入文件,首先要指定文件的路径。

  • 说明——使用Pandas模块操作Excel时候,需要安装openpyxl
pd.read_excel('stu_data.xlsx')

【示例】导入.xlsx文件时,指定导入哪个Sheet

pd.read_excel('stu_data.xlsx',sheet_name='Target')
pd.read_excel('stu_data.xlsx',sheet_name=0)

【示例】导入.xlsx文件时,通过index_col指定行索引

pd.read_excel('stu_data.xlsx',sheet_name=0,index_col=0)

【示例】导入.xlsx文件时,通过header指定列索引

pd.read_excel('stu_data.xlsx',sheet_name=0,header=1)
pd.read_excel('stu_data.xlsx',sheet_name=0,header=None)

有时候本地文件的列数太多,而我们又不需要那么多列时,我们就可以通过设置usecols参数来指定要导入的列。
【示例】导入.xlsx文件时,通过usecols指定导入列

# 导入1,2,3列
pd.read_excel('stu_data.xlsx',usecols=[1,2,3])

导入csv文件

导入csv文件时除了指明文件路径,还需要设置编码格式。Python中用得比较多的两种编码格式是UTF-8gbk默认编码格式是UTF-8。我们要根据导入文件本身的编码格式进行设置,通过设置参数encoding来设置导入的编码格式。

【示例】导入.csv文件,文件编码格式是gbk

pd.read_csv('stu_data.csv',encoding='gbk')

用分隔符号进行分隔。常用的分隔符除了逗号、空格,还有制表符(\t)。

【示例】导入.csv文件,指明分隔符

df = pd.read_csv("stu_data.csv",encoding='gbk',sep=' ')
pd.read_csv('stu_data.csv',encoding='gbk',sep=',')

导入txt文件

导入.txt文件用得方法时read_table(),read_table()是将利用分隔符分开的文件导入。DataFrame的通用函数。它不仅仅可以导入.txt文件,还可以导入.csv文件。

【示例】导入.txt文件

pd.read_table('test_data.txt',encoding='utf-8',sep='\t')

【示例】导入.csv文件,指明分隔符

pd.read_table('stu_data.csv',encoding='gbk',sep=',')

保存数据

保存数据至外部文件

df.to_csv(filepath_or_buffer :要保存的文件路径sep =:分隔符columns :需要导出的变量列表header = True :指定导出数据的新变量名,可直接提供 listindex = True :是否导出索引mode = 'w' : Python 写模式,读写方式:r,r+ ,w , w+ , a , a+     encoding = 'utf-8' :默认导出的文件编码格式)
df2.to_csv('temp.csv')
df.to_excel(filepath_or_buffer :要读入的文件路径sheet_name = 1 Sheetl1 :要保存的表单名称
)
df2.to_excel('temp.xlsx', index = False,sheet_name = data)

了解数据

head()与 tail()

当数据表中包含了数据行数过多时,而我们又想看一下每一列数据都是什么样的数据时,就可以把数据表中前几行或后几行数据显示出来进行查看head()方法返回前 n 行(观察索引值),显示元素的数量默认是 5,但可以传递自定义数值tail()方法返回后 n 行观察索引值),显示元素的数量默认是 5,但可以传递自定义数值

#浏览前几条记录
df.head()
df.head(10)
#浏览最后几条记录
df.tail()

info()

熟悉数据的第一点就是看下数据的类型,不同的数据类型的分析思路是不一样的,比如说数值类型的数据就可以求均值,但是字符类型的数据就没法求均值了。
info()方法查看数据表中的数据类型,而且不需要一列一列的查看,info()可以输出整个表 中所有列的数据类型。

df.info()

shape

熟悉数据的第二点就是看下数据表的大小,即数据表有多少行,多少列 。
shape()方法会以元组的形式返回行、列数。注意 shape 方法获取行数和列数时不会把索引和列索引计算在内。

df.shape

describe()

熟悉数据的第三点就是掌握数值的分布情况,即均值是多少,最值是多少,方差及分位数分别是多少 。
describe()方法就是可以获取所有数值类型字段的分布值。

df.describe()

列操作

修改变量列

columns

df.columns =新的名称 list
df.columns

rename()

df.rename(
columns =新旧名称字典:{旧名称,:新名称,}
inplace = False :是否直接替换原数据框)df.rename(columns ='newname':'name','newname2':'name2',inplace = True)

筛选变量列

通过 df.var 或 df[var] 可以选择单列

  • 注意:但只适用于已存在的列,只能筛选单列,结果为 Series
df.var 单列的筛选结果为 Series

通过 df[[var]] 可以选择多列

df[[var]] 单列的筛选结果为 DataFream
df[['var1', 'var2']] 多列时,列名需要用列表形式提
供(因此可使用列表中的切片操作) 多列的筛选结果为 DF

删除变量列

df.drop(
index / columns =准备删除的行/列标签,多个时用列表
形式提供
inplace = False :是否直接更改原数据框)
df.drop(columns =['col1','col2'])
del df['column-name'] 直接删除原数据框相应的一列,建议尽量少用
del df.column_name #不允许

添加变量列

根据新数据添加

df[cloumn] = pd.Series([val,val2,val3],index=[c1,c2,c3])

根据原数据添加

df[cloumn] = df[c2]+df[c3]

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

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

相关文章

深入理解 Java 虚拟机第三版(周志明)

这次社招选的这本作为 JVM 资料查阅,记录一些重点 1. 虚拟机历史 Sun Classic VM :已退休 HotSpot VM:主流虚拟机,热点代码探测技术 Mobile / Embedded VM :移动端、嵌入式使用的虚拟机 2.2 运行时数据区域 程序计…

计算机概述

1.1 计算机的发展历程 工认的第一台计算机ENIAC于1946年诞生。计算机的发展一般分为四个阶段:第一阶段为电子管计算机时代;第二阶段为晶体管计算机时代;第三阶段为集成电路计算机时代;第四阶段为大规模集成电路时代…

软件测试20个基础面试题及答案

什么是软件测试? 答案:软件测试是指在预定的环境中运行程序,为了发现软件存在的错误、缺陷以及其他不符合要求的行为的过程。 软件测试的目的是什么? 答案:软件测试的主要目的是保证软件的质量,并尽可能…

“消费增值风暴:百万业绩背后的创新电商模式“

今日,我怀着无比激动的心情,向您揭示一个激励人心的成长篇章。我们的战略伙伴在短短一个月内,业绩如火箭般攀升,成功跨越百万销售额大关,同时,其用户活跃度居高不下,日均在线用户数稳稳占据8至1…

[Unity] ShaderGraph实现镜头加速线/残血效果 URP

效果如下所示:残血状态时,画面会压暗角,并出现速度线营造紧迫感。 使用到的素材如下,换别的当然也可以。[这是张白色的png放射图,并非皇帝的新图hhh] 这个效果的实现逻辑,其实就是利用time向圆心做透明度的…

【ai】Easy-RAG 3: ImportError: cannot import name ‘BaseModel‘ from ‘pydantic‘

[Bug]: cannot import name ‘RootModel’ from ‘pydantic’ #1237 版本不匹配导致 ImportError: cannot import name ‘BaseModel’ from ‘pydantic’ /home/zhangbin/miniconda3/envs/Easy-RAG/bin/python /home/zhangbin/proj/06_rag/02_Easy-RAG/webui.py /home/zhangbi…

HAL库源码移植与使用之低功耗模式

低功耗特性对用电池供电的产品: 更小电池体积(降低了大小和成本) 延长电池寿命 电磁干扰更小,提高无线通信质量 电源设计更简单,无需过多考虑散热问题 电源供电区分为: 分为VDD供电区…

友思特应用 | 硅片上的光影贴合:UV-LED曝光系统在晶圆边缘曝光中的高效应用

导读 晶圆边缘曝光是帮助减少晶圆涂布过程中多余的光刻胶对电子器件影响的重要步骤。友思特 ALE/1 和 ALE/3 UV-LED 高性能点光源,作为唯一可用于宽带晶圆边缘曝光的 i、h 和 g 线的 LED 解决方案,可高效实现WEE系统设计和曝光需求。 晶圆边缘曝光及处…

分布式相关理论详解

目录 1.绪论 2.什么是分布式系统,和集群的区别 3.CAP理论 3.1 什么是CAP理论 3.2 一致性 3.2.1 计算机的一致性说明 1.事务中的一致性 2.并发场景下的一致性 3.分布式场景下的一致性 3.2.2 一致性分类 3.2.3 强一致性 1.线性一致性 a) 定义 a) Raft算法…

通过ATS软件抓取ios手机日志方法记录

1.ios手机下载描述符文件,用于过检测 下载网址:https://developer.apple.com/bug-reporting/profiles-and-logs/?nameB 点击这个下载,之后在手机通用-VPN与设备管理里面找到刚才下载的描述文件然后安装; 2024.6月后注意会提示描…

springcloud RocketMQ 客户端是怎么走到消费业务逻辑的 - debug step by step

springcloud RocketMQ ,一个mq消息发送后,客户端是怎么一步步拿到消息去消费的?我们要从代码层面探究这个问题。 找的流程图,有待考究。 以下我们开始debug: 拉取数据的线程: PullMessageService.java 本…

Linux构建远程YUM仓库与NFS共享存储服务

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

YOLOX+PyQt5交通路口智能监测平台设计与实现

1.概述 交通要道的路口上人车穿行,特别是上下班早高峰,且时常发生交通事故。因此对交通路口的车流量和人流量的监测必不可少。 2.检测模型 使用的检测模型为YOLOX模型,模型权重为训练VOC数据集得来,其中包括了二十个类别&#…

常用的数据分析方法和工具有哪些?

常用的数据分析方法和工具在多个领域都有广泛的应用,它们帮助人们从复杂的数据中提取有价值的信息和洞察。以下是对常用数据分析方法和工具的详细归纳: 常用的数据分析方法 描述性统计分析: 内容:对数据集的基本统计项进行计算和…

Vue3二次封装axios

官网: https://www.axios-http.cn/docs/interceptors steps1: 安装 npm install axios -ssteps2: /src/api/request.js 文件 >>> 拦截器 import axios from axios // 如果没用element-plus就不引入 import { ElMessage } from element-plusconst service axios.cre…

【阿里云】阿里云产品go sdk封装调用demo

文章目录 代码Reference 代码 产品sdk封装函数: package apsaraimport ("github.com/aliyun/alibaba-cloud-sdk-go/services/ecs""github.com/aliyun/alibaba-cloud-sdk-go/services/nas""github.com/aliyun/alibaba-cloud-sdk-go/servi…

【区块链+绿色低碳】基于区块链的双碳能源纳管平台 | FISCO BCOS应用案例

在双碳战略的指导下,南京区块链产业应用协会牵头研发的双碳能源纳管平台,依托区块链、人工智能、云计算、 物联网、大数据、工业互联网与边缘计算等技术,对绿电追溯、需求侧响应、能源微网、源网荷储、隔墙用电、 碳排放权认证、额度计量、预…

循环队列的实现【C语言】

用数组实现循环队列 题目:622. 设计循环队列 - 力扣(LeetCode) 分析 循环队列,队列满则不能再插入数据,队列为空则不能再出数据。 多开一个空间方便区分队列为空和队列为满的情况。 如果要存K个数据只开K个空间&a…

【在排序数组中查找元素的第一个和最后一个位置】python刷题记录

R2-分治 有点easy的感觉,感觉能用哈希表 class Solution:def searchRange(self, nums: List[int], target: int) -> List[int]:nlen(nums)dictdefaultdict(list)#初始赋值哈希表,记录出现次数for num in nums:if not dict[num]:dict[num]1else:dict[…

vue2老项目中node-sass更换dart-sass

更换原因:node-sass经常会出现node版本问题,就很麻烦 卸载项目中的node-sass sass-loader npm uninstall sass-loader sass 安装dart-sas sass-loader 推荐安装sass1.26.2 sass-loader7.3.1 npm install sass-loader7.3.1 sass1.26.2 从新配置vue.…