3.2.3 Python之pandas详解2-DataFrame

2) DataFrame介绍
DataFrame是一种二维的数据结构,非常接近于电子表格或者类似MySQL数据库的形式。它的竖行称之为 columns,横行跟前面的Series一样,称之为 index,也就是说可以通过columns和index来确定一个主句的位置。
>>> import pandas as pd
>>> from pandas import Series , DataFrame
>>> data = {"name":["zhangsan","lisi","wangwu"],"age":[20,18,19],"money":[300,200,50]}
>>> f1 = DataFrame (data)
>>> f1
age money name
0 20 300 zhangsan
1 18 200 lisi
2 19 50 wangwu
这是定义一个DataFrame对象的常用方法——使用dict定义。字典的“键”("name","age","money")就是 DataFramecolumns的值(名称),字典中每个“键”的“值”是一个列表,它们就是那一竖列中的填充数据。上面的定义中没有确定索引,所以,按照惯例(Series中已经形成的惯例)就是从0开始的整数。
上面数据可以看出来, columns的顺序没有规定,就如同字典中键的顺序一样,但是在 DataFrame中, columns跟字典键相比,有一个明显不同,就是其顺序可以按自己的规定来:
>>> f2 = DataFrame (data, columns =["name","age","money"])
>>> f2
name age money
0 zhangsan 20 300
1 lisi 18 200
2 wangwu 19 50
跟Series类似,DataFrame数据的索引也能够自定义:
>>> f3 = DataFrame (data, columns =["name","age","money","four"], index =["a","b","c"])
>>> f3
name age money four
a zhangsan 20 300 NaN
b lisi 18 200 NaN
c wangwu 19 50 NaN
注意观察上面的显示结果。因为在定义f3的时候,columns的参数中比以往多了一项("four"),但是这项在data这个字典中并没有,所以four这一竖列的值都是空的,在Pandas中,空就用NaN来代表了。
注意columns可以增加,index随意增加,可能会因为和值的行数不匹配,会报错。
DataFrame定义方式,也可以使用字典的方式:
>>> data1 = {"name":{"one":"zhangsan","two":"lisi"},"age":{"one":18,"two":20}}
>>> f4 = DataFrame(data1)
>>> f4
age name
one 18 zhangsan
two 20 lisi
在字典中就规定好数列名称(第一层键)和每横行索引(第二层字典键)以及对应的数据(第二层字典值),即在字典中规定好每个数据格子中的数据,没有规定的都是空。
定义了DataFrame数据,它也是一种对象类型,比如变量f3引用了一个对象,它的类型是DataFrame。对象有属性和方法:
>>> f3. columns
Index([u'name', u'age', u'money', u'four'], dtype='object')
>>> f3["name"]
a zhangsan
b lisi
c wangwu
Name: name, dtype: object
这其实就是一个Series,或者说,可以将DataFrame理解为是由一个一个的Series组成的。
赋值
>>> f3
name age money four
a zhangsan 20 300 NaN
b lisi 18 200 NaN
c wangwu 19 50 NaN
>>> f3["four"] = "hello"
>>> f3
name age money four
a zhangsan 20 300 hello
b lisi 18 200 hello
c wangwu 19 50 hello
统一赋值之后,还能 点对点赋值
>>> ha = Series (["beijing","shanghai"],index=["b","c"])
>>> f3["four"]=ha
>>> f3
name age money four
a zhangsan 20 300 NaN
b lisi 18 200 beijing
c wangwu 19 50 shanghai
将Series对象(ha变量所引用)赋给f3['four']列,Pandas的一个重要特性——自动对齐,在这里起做用了,在Series中,只有两个索引("b","c"),它们将和DataFrame中的索引自动对齐。
自动对齐之后,没有被复制的依然保持NaN。
更精细的点对点:
>>> f3["four"]["a"]="tianjin"
>>> f3
name age money four
a zhangsan 20 300 tianjin
b lisi 18 200 beijing
c wangwu 19 50 shanghai
改过来了,但是可能会警告:A value is trying to be set on a copy of a slice from a DataFrame
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值