博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8、Python 机器学习基础知识Pandas库中的DataFrom(二)
阅读量:4111 次
发布时间:2019-05-25

本文共 2620 字,大约阅读时间需要 8 分钟。

DataFrom

DataFrame 是一种二维的数据结构,非常接近于电子表格或者类似 mysql 数据库的形式。它的竖行称之为 columns,横行跟前面的 Series 一样,称之为 index,也就是说可以通过 columns 和 index 来确定一个主句的位置。(有人把 DataFrame 翻译为“数据框”,是不是还可以称之为“筐”呢?向里面装数据嘛。)

在这里插入图片描述

定义方式:

1、DataFrame 最基本的定义方式:

data = {'name':['yahoo','google','facebook'],'marks':[200,100,300],'price':[9,3,7]}f1 = DataFrame(data)print(f1)输出:       name  marks  price0     yahoo    200      91    google    100      32  facebook    300      7

这是定义一个 DataFrame 对象的常用方法——使用 dict 定义。字典的“键”(“name”,“marks”,“price”)就是 DataFrame 的 columns 的值(名称),字典中每个“键”的“值”是一个列表,它们就是那一竖列中的具体填充数据。上面的定义中没有确定索引,所以,按照惯例(Series 中已经形成的惯例)就是从 0 开始的整数。从上面的结果中很明显表示出来,这就是一个二维的数据结构(类似 excel 或者 mysql 中的查看效果)。

上面的数据显示中,columns 的顺序没有规定,就如同字典中键的顺序一样,但是在 DataFrame 中,columns 跟字典键相比,有一个明显不同,就是其顺序可以被规定,向下面这样做:

f2 = DataFrame(data, columns=['name','price','marks']) print (f2) 输出:       name  price  marks0     yahoo      9    2001    google      3    1002  facebook      7    300

DataFrame 数据的索引也能够自定义。

f3 = DataFrame(data, columns=['name', 'price', 'marks', 'debt'], index=['a','b','c']) print (f3) 输出        name  price  marks debta     yahoo      9    200  NaNb    google      3    100  NaNc  facebook      7    300  NaN

因为定义f3的时候,多了一个键值debt,但是这项在 data 这个字典中并没有,所以 debt 这一竖列的值都是空的,在 Pandas 中,空就用 NaN 来代表了。

1、DataFrame 使用字典套字典的方式:

newdata = {"lang":{"firstline":"python","secondline":"java"}, "price":{"firstline":8000}}f4 = DataFrame(newdata)print(f4)输出:              lang   pricefirstline   python  8000.0secondline    java     NaN

在字典中就规定好数列名称(第一层键)和每横行索引(第二层字典键)以及对应的数据(第二层字典值),也就是在字典中规定好了每个数据格子中的数据,没有规定的都是空。

如果额外确定了索引,除非在字典中有相应的索引内容,否则都是 NaN,如下:

print(DataFrame(newdata, index=["firstline","secondline","thirdline"]) )输出:              lang     price firstline     python   8000 secondline    java     NaN thirdline     NaN      NaN

属性和方法:

columns :

columns 属性能够显示所有的 columns 名称

print(f3.columns )输出:Index(['name', 'price', 'marks', 'debt'], dtype=object)

还能用下面类似字典的方式,得到某竖列的全部内容(当然也包含了索引):

peint( f3['name'] )输出:a       yahoob      googlec    facebookName: name, dtype: object

给某一列直接赋值

f3['debt'] = 89.2 输出:       name  price  marks  debta     yahoo      9    200  89.2b    google      3    100  89.2c  facebook      7    300  89.2

除了能够统一赋值之外,还能够“点对点”添加数值,自动对齐之后,没有被复制的依然保持 NaN

sdebt = Series([2.2,1.1],index=('a','b'))f3['debt'] = sdebtprint(f3)输出:       name  price  marks  debta     yahoo      9    200   2.2b    google      3    100   1.1c  facebook      7    300   NaN

还可以更精准的修改数据吗?当然可以,完全仿照字典的操作:

f3["price"]["c"] = 1000print(f3)输出:       name  price  marks  debta     yahoo      9    200   2.2b    google      3    100   1.1c  facebook   1000    300   NaN

转载地址:http://ukesi.baihongyu.com/

你可能感兴趣的文章
JDBC核心技术 - 上篇
查看>>
JDBC核心技术 - 下篇
查看>>
一篇搞懂Java反射机制
查看>>
一篇彻底搞懂Java注解与枚举类
查看>>
【2021-MOOC-浙江大学-陈越、何钦铭-数据结构】树
查看>>
MySQL主从复制不一致的原因以及解决方法
查看>>
RedisTemplate的key默认序列化器问题
查看>>
序列化与自定义序列化
查看>>
ThreadLocal
查看>>
从Executor接口设计看设计模式之最少知识法则
查看>>
OKhttp之Call接口
查看>>
application/x-www-form-urlencoded、multipart/form-data、text/plain
查看>>
关于Content-Length
查看>>
WebRequest post读取源码
查看>>
使用TcpClient可避免HttpWebRequest的常见错误
查看>>
EntityFramework 学习之一 —— 模型概述与环境搭建 .
查看>>
C# 发HTTP请求
查看>>
初试visual studio2012的新型数据库LocalDB
查看>>
启动 LocalDB 和连接到 LocalDB
查看>>
Palindrome Number --回文整数
查看>>