当前位置: 首页 > news >正文

pandas模块学习笔记1--数据结构

pandas是基于Numpy构建的。

pandas的两个主要数据结构:Series和DataFrame。

Series和DataFrame用的次数非常多,将其导入本地命名空间会更方便:

from pandas import Series, DataFrame

一、Series

Series是一种类似于一维数组的对象,由数据和数据标签(索引)组成,创建Series:

obj = Series([1,2,3])  # 该情况下会自动创建整数型索引,以0开头;索引在左边,值在右边
print(obj.index)      # 通过Series的values和index属性可以获取数值和索引
print(obj.values)
obj2 = Series([345,54,34,345,35],index=['a','b','c','d','e'])  # 自定义索引创建Series
data = {'ohin':234,'sef':124}  # 通过字典来创建Series
obj3 = Series(data)

Series的一个重要功能是:在算术运算中会自动对齐不同索引的数据

二、DataFrame

DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。DataFrame既有行索引也有列索引,可以看成是Series组成的字典(共用同一个索引)。

创建DataFrame:传入一个由等长列表组成的字典

data = {
    'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
    'year':[2000,2001,2002,2001,2002],
    'pop':[1.5,1.7,3.6,2.4,2.9]
}
frame = DataFrame(data)
输出为:
   pop   state  year
0  1.5    Ohio  2000
1  1.7    Ohio  2001
2  3.6    Ohio  2002
3  2.4  Nevada  2001
4  2.9  Nevada  2002

跟Series一样,如果传入的列在数据中找不到,就会产生NA值:

frame = DataFrame(data, columns=['state','year','pop','debt'],index=['one','two','three','four','five'])
输出为:
        state  year  pop debt
one      Ohio  2000  1.5  NaN
two      Ohio  2001  1.7  NaN
three    Ohio  2002  3.6  NaN
four   Nevada  2001  2.4  NaN
five   Nevada  2002  2.9  NaN

通过类似字典标记的方式或属性的方式,可以将DataFrame的列获取为一个Series:

print(frame.state)
或 print(frame['state'])
输出为:
one        Ohio
two        Ohio
three      Ohio
four     Nevada
five     Nevada
Name: state, dtype: object

行也可以通过位置或名称的方式进行获取,比如用索引字段ix:

print(frame.ix['three'])
输出为:
state    Ohio
year     2002
pop       3.6
debt      NaN
Name: three, dtype: object

列可以通过赋值的方式进行修改,将列表或数组赋值给某个列时,其长度必须跟DataFrame的长度相匹配。为不存在的列赋值会创建出一个新列。关键字del用于删除列。

通过索引方式返回的列只是相应数据的视图而已,并不是副本。因此,对返回的Series所做的任何修改全部都会反映到源DataFrame上。

另一种常见的数据形式是嵌套字典(字典的字典):如果将它传给DataFrame函数,会被解释为:外层字典的键作为列,内层键作为行索引:

pop = {
    'Nevada':{2001:2.4,2002:2.9},
    'Ohio':{2000:1.5,2001:1.7,2002:3.6}
}
frame3 = DataFrame(pop)
print(frame3)
输出为:
      Nevada  Ohio
2000     NaN   1.5
2001     2.4   1.7
2002     2.9   3.6

 

转载于:https://www.cnblogs.com/weimusan/p/7594378.html

相关文章:

  • Hadoop安装
  • VMware + JunOS + Linux 搭建安全测试平台
  • SecureCRT复制粘贴快捷键
  • hexo博客同步管理及迁移
  • WM_MOUSEWHEEL、WM_LBUTTONDOWN等父子窗口消息传递陷阱
  • 使用IntelliJ IDEA 配置Maven(入门)
  • 软件项目中的成本构成及估算方法【转】
  • windows下node配置npm全局路径(踩坑)
  • springmvc入门程序
  • SQServer查询数据库所有触发器
  • 流水线生产,精益生产,TPS和TOC的缓冲管理
  • win32——关机
  • 几个常用线程的
  • 可重入函数与不可重入函数
  • C#关于MSMQ通过HTTP远程发送专有队列消息的问题
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Codepen 每日精选(2018-3-25)
  • ES6系列(二)变量的解构赋值
  • Java 内存分配及垃圾回收机制初探
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • node-glob通配符
  • Python语法速览与机器学习开发环境搭建
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 构建工具 - 收藏集 - 掘金
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 消息队列系列二(IOT中消息队列的应用)
  • 小程序开发之路(一)
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Prometheus VS InfluxDB
  • #NOIP 2014# day.1 T2 联合权值
  • #前后端分离# 头条发布系统
  • (16)Reactor的测试——响应式Spring的道法术器
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (八十八)VFL语言初步 - 实现布局
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (第二周)效能测试
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)windows配置JDK环境
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (转)Oracle存储过程编写经验和优化措施
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET 事件模型教程(二)
  • .NET面试题解析(11)-SQL语言基础及数据库基本原理
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET与 java通用的3DES加密解密方法
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ vulhub漏洞复现篇 ] ECShop 2.x / 3.x SQL注入/远程执行代码漏洞 xianzhi-2017-02-82239600
  • [Ariticle] 厚黑之道 一 小狐狸听故事
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [CF]Codeforces Round #551 (Div. 2)
  • [HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [IE编程] 如何获得IE版本号