python 08Pandas

1.基础概念

2.基本操作

(1)加载数据集

import pandas as pd  #引入pandas包

打开csv文件

df = pd.read_csv('./data/gapminder.tsv',sep='\t')  #\t制表符,即tab,缩进四个字符  \n表示回车换行
print(type(df))
print(df.head())  #显示前5行  默认将列表的第一列设置为列标签,即取完之后的数据其实是从原始列表的第二列开始的

<class 'pandas.core.frame.DataFrame'>
       country continent  year  lifeExp       pop   gdpPercap
0  Afghanistan      Asia  1952   28.801   8425333  779.445314
1  Afghanistan      Asia  1957   30.332   9240934  820.853030
2  Afghanistan      Asia  1962   31.997  10267083  853.100710
3  Afghanistan      Asia  1967   34.020  11537966  836.197138
4  Afghanistan      Asia  1972   36.088  13079460  739.981106

print(df.tail())  #显示最后5行
print(type(df))  #df为DataFrame类型
print(df.shape)  #shape是DataFrame的属性,而不是方法,注意没有()
print(df.columns) #查看数据的列名,相当于数据库的字段名
print(type(df.columns))
print(list(df.columns)) #可以转换为list


(2)获取列子集

country_df = df['country']  #获取一列
print(country_df.head())
print(type(country_df))  #contry_df为Series类型,pandas的列为series类型
country_df = df[['country','year']] #获取制定多列,注意 里面是list 两层[],可以理解为df获取列的参数是某一列,或者是多列组成的一个List

print(country_df.head())
print(type(country_df))


(3)获取行子集

通过索引标签获取行(注意与iloc的区别)

print(df.head())
print(df.loc[0]) #通过索引值取得行
print(type(df.loc[0]))  #注意,取得一行的时候,结果是Series
print(df.loc[2:5])  #同list和numpy的切片操作

可以使用tail()返回最后一行

print(df.tail(n=5))   #n为选取的数量,修改为2试试

选取多行

print(df.loc[[0,1,3]])   #里面是list,两层[],同上df取多列
print(df.tail())
print(df.iloc[[-2,-1]])


(4)混合获取

使用loc获取列子集

subset = df.loc[:,['year','pop']]  #同numpy的二维操作,行通过:取全部,列通过一个list取得特定的列 修改行的值试试,去特定几行
print(subset.head())
subset = df.iloc[:,[2,3,-2,-1]]  #负值索引,同list,忘记的回去复习巩固
print(subset.head())

通过范围选择列子集

m=list(range(0,2))  #想先之前学过的,范围包含第一个值,不包含第二个值
print(m)
print(df.iloc[:,m].head())

通过切片选择列子集

subset = df.iloc[:,0:6:2] #带步长,跟list一样
print(subset)

获取行和列的子集

print(df.loc[2,'year'])  #loc注意是索引值

获取多行和多列的子集

print(df.loc[[0,99,999],['country','year']])  #这里与numpy的二维数组取多行多列区别开


(5)分组和聚合计算

print(df.groupby('year')['lifeExp'].mean())  #按年份分组计算平均值

3.Pandas数据结构

(1)创建series

Series
Series是 一维 容器,类似于python 的list。
DataFrame可以看作由Series对象组成的字典,其中每个键是列名,值是Series

import pandas as pd
s = pd.Series(['banana',42])  #默认索引
print(type(s))
print(s)
s = pd.Series(['banana',42],index=['食物','数量'])  #指定索引
print(s)


(2)创建DataFrame

scientists = pd.DataFrame({'name':['Franklin','William Gosset'],'Age':[37,61]})
print(scientists)
scientists = pd.DataFrame(
 data={'Occupation':['chemist','statistician'],
       'Born':['1920','1876'],
       'Died':['1958','1937'],
       'Age':[37,61]},
 index=['Rosaline Franklin','William Gosset'],  #把此行注销掉试试看
 columns=['Occupation','Born','Died','Age']
)   #必须与data里的一致

print(scientists)


(3)series操作


(4)series数据操作

布尔子集:Series
用于取数据子集的行索引或列索引往往不确定,通常需要寻求满足(或不满足)特定计算或观测值的值

scientists = pd.read_csv('./data/scientists.csv')
print(scientists)
print(scientists.shape)

ages = scientists['Age']
print(ages)

使用describe()方法获取基本统计量

ages.describe()

操作自动对齐和向量化
许多Series方法都是 向量化 的,这些方法会 同时 处理整个向量,而不用使用for循环

对向量的操作会根据索引进行,缺失值用NaN表示

带有常见索引标签的向量(自动对齐)

DataFrame操作

导出和导入数据

保存数据

names=scientists['Name']
print(names)
names.to_pickle('./data/scientist_names_)series.pikle')  #保存成pickle文件,用二进制格式保存数据,节省磁盘空间  .p .pkl也可
scientist_from=pd.read_pickle('./data/scientist_names_)series.pikle')
print(scientist_from)
scientist.to_csv('./data/scientist_no_index.csv',index=False)

 对于CSV文件,有时需要删除行号

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue的监视属性

目录 1. 场景引入2. watch3. 深度监视4. 监视属性简写5. 小结 1. 场景引入 在实际开发中&#xff0c;有时开发者需要根据某个属性的变化&#xff0c;做出相应的决策&#xff0c;因此Vue为开发者提供了watch.这一监视属性&#xff0c;用于实现此类需求。比如下面这个场景&…

解决 macOS 系统向日葵远程控制鼠标、键盘无法点击的问题

解决 macOS 系统向日葵远程控制鼠标\键盘无法点击的问题 1、首先正常配置&#xff0c;在系统偏好设置 - 安全性与隐私内&#xff0c;将屏幕录制、文件和文件夹、完全的磁盘访问权限、辅助功能全部都加入向日葵客户端 2、通过打开的文件访达&#xff0c;使用command shift G…

蓝桥杯2023A-05-互质数(Java)

5.互质数 题目描述 给定 a, b&#xff0c;求 1 ≤ x < a^b 中有多少个 x 与 a^b 互质。由于答案可能很大&#xff0c;你只需要输出答案对 998244353 取模的结果。 输入格式 输入一行包含两个整数分别表示 a, b&#xff0c;用一个空格分隔。 输出格式 输出一行包含一个…

java操作linux

文章目录 远程连接服务器执行linux命令或shell脚本介绍Process的方法相关类UML 工具类基本工具类依赖第三方的工具类 远程连接服务器 java程序远程linux服务器有两个框架分别是&#xff1a;jsch与ganymed-ssh2框架。推荐使用jsch框架&#xff0c;因为ganymed-ssh2框架不支持麒…

IO流的基础详解

文件【1】File类&#xff1a; 封装文件/目录的各种信息&#xff0c;对目录/文件进行操作&#xff0c;但是我们不可以获取到文件/目录中的内容。 【2】引入&#xff1a;IO流&#xff1a; I/O &#xff1a; Input/Output的缩写&#xff0c;用于处理设备之间的数据的传输。 【3】…

【单片机家电产品学习记录--蜂鸣器】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 单片机家电产品–蜂鸣器 前言 记录学习单片机家电产品内容 已转载记录为主 一、知识点 1电子电路学习笔记&#xff08;17&#xff09;——蜂鸣器 蜂鸣器种类和原理 2疑…

【R基础】一组数据计算均值、方差与标准差方法及意义

【R基础】一组数据计算均值、方差与标准差方法及意义 均值、方差与标准差是用来描述数据分布情况 均值&#xff1a;用来衡量一组数据整体情况。 数据离散程度度量标准&#xff1a; 方差&#xff08;均方&#xff0c;s^2&#xff0c;总体参数&#xff0c;离均差平方和&#…

kotlin项目引用

概要&#xff1a; 记录项目引用kotlin具体事项 1 object下build.gradle buildscript {//声明引用版本ext.kotlin_version "1.4.20"repositories {google()mavenCentral()}dependencies {classpath "com.android.tools.build:gradle:4.2.0"//引用kotlinc…

队列实现栈———栈实现队列

两个队列实现栈 . - 力扣&#xff08;LeetCode&#xff09; 如何用两个队列实现栈的操作呢&#xff1f; 弹出 我们知道栈的特点是后进先出&#xff0c;而队列的特点是先进先出。如何用两个队列实现数据的先进后出。首先我们先抽象一个一个栈用来思考我们该怎么实现 我们先假设…

代码随想录阅读笔记-二叉树【总结】

二叉树的理论基础 代码随想录 (programmercarl.com)&#xff1a;二叉树的种类、存储方式、遍历方式、定义方式 二叉树的遍历方式 深度优先遍历 代码随想录阅读笔记-二叉树【递归遍历】-CSDN博客&#xff1a;递归三部曲初次亮相代码随想录阅读笔记-二叉树【迭代遍历】-CSDN博…

编写Markdown时如何爽爽地渲染树?

在使用VitePress/Dumi等静态网站生成时&#xff0c;一般均支持直接在Markdown中渲染显示Vue/React组件&#xff0c;这给个网站非常丰富极致的表现力&#xff0c;我们在创建静态网站时开心的使用各种Vue/React组件&#xff0c;但是在输出树结构时&#xff0c;实际场景中存在几个…

李沐25_使用块的网络VGG——自学笔记

VGG架构 1.多个VGG块后接全连接层 2.不同次数的重复块得到不同的架构 VGG-16、VGG-19 3.更大更深的AlexNet ##经典卷积神经网络的基本组成部分是下面的这个序列&#xff1a; 1.带填充以保持分辨率的卷积层&#xff1b; 2.非线性激活函数&#xff0c;如ReLU&#xff1b; …

【规划算法】A星 与 混合A星

理解概念: A星寻路算法详解&#xff08;C实现 完整代码图片演示 &#xff09;_a星算法-CSDN博客 A*算法图解_a*算法流程图-CSDN博客 A星(A*、A Star)路径规划算法详解&#xff08;附MATLAB代码&#xff09;_a星算法路径规划-CSDN博客 改进A*算法dwa 本文提出了一种改进的A*…

Tmux 使用笔记

Tmux 是一个终端复用器&#xff08;terminal multiplexer&#xff09;&#xff0c;非常有用&#xff0c;属于常用的开发工具。 本文记录个人使用 Tmux的命令。 1. tmux简介 命令行的典型使用方式是&#xff0c;打开一个终端窗口&#xff0c;连接计算机&#xff0c;在里面输入…

【刷题】备战蓝桥杯 — dfs 算法

送给大家一句话&#xff1a; 风度真美&#xff01; 即使流泪&#xff0c;也要鼓掌&#xff0c; 即使失望&#xff0c;也要满怀希望。 ——刘宝增 dfs 算法 1 前言2 洛谷 P1030 [NOIP2001 普及组] 求先序排列题目描述算法思路 3 洛谷 P1294 高手去散步题目描述算法思路 4 蓝桥…

1.2.4 采用Java配置类管理Bean

本实战将演示如何使用Java配置类管理Bean&#xff0c;实现基于注解的IoC容器的配置。 创建新包 在net.huawei.spring根包里创建day04子包。 创建杀龙任务类 在day04子包里创建SlayDragonQuest类。在该类上不添加Component注解。 创建勇敢骑士类 在day04子包里创建BraveKnight…

HarmonyOS开发实例:【分布式数据管理】

介绍 本示例展示了在eTS中分布式数据管理的使用&#xff0c;包括KVManager对象实例的创建和KVStore数据流转的使用。 通过设备管理接口[ohos.distributedDeviceManager]&#xff0c;实现设备之间的kvStore对象的数据传输交互&#xff0c;该对象拥有以下能力 ; 1、注册和解除注…

大话设计模式——17.状态模式(State Pattern)

简介 对象的行为依赖于它的状态&#xff08;属性&#xff09;&#xff0c;可以根据状态的改变而改变相关行为。 UML图&#xff1a; 应用场景&#xff1a; 对象的行为取决于其状态&#xff0c;并且必须要在运行时刻根据状态而改变行为代码中包含大量与对象状态有关的条件语句 …

SMT用料全检抽检

下载地址百度网盘&#xff1a; https://pan.baidu.com/s/1kDn_l8P6ReC4Lj5tgt-v4w?pwd5y41 提取码:5y41 1、扫描输入车间线体 2、根据线体获取在线订单 3、选择(全检|抽检|换接新料)开始 4、根据提示扫描站位和料号核对 5、核对成功再扫描核对下一组

<-泛型->

1.泛型的概念 所谓泛型&#xff0c;就是允许在定义类, 接口 时通过一个"标识"表示类中某个属性的类型或者某个方法的返回值或形参类型.这个类型参数将在使用时确定. 2.举例 (1). 集合类在设计阶段/声明阶段不能确定这个容器到底存的是什么对象&#xff0c;所以在JDK…