python之pandas简单介绍及使用(一)

时间:2025-03-05 07:52:16

In [24]: s4[s4 > 9000]
Out[24]:
数学 9001.0
dtype: float64

Series就先简要写到这,下面看pandas的另一种数据结构DataFrame.

DataFrame

DataFrame 是一种二维的数据结构,非常接近于电子表格或者类似 mysql 数据库的形式。它的竖行称之为 columns,横行跟前面的 Series 一样,称之为 index,也就是说可以通过 columns 和 index 来确定一个主句的位置。

首先来导入模块

In [27]: from pandas import Series,DataFrame

In [26]: data = {"name":['google','baidu','yahoo'],"marks":[100,200,300],"price":[1,2,3]}

In [28]: f1 = DataFrame(data)

In [29]: f1
Out[29]:
marks name price
0 100 google 1
1 200 baidu 2
2 300 yahoo 3

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

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

In [31]: f2 = DataFrame(data,columns=['name','price','marks'])

In [32]: f2
Out[32]:
name price marks
0  google 1     100
1  baidu 2       200
2  yahoo 3       300

跟 Series 类似的,DataFrame 数据的索引也能够自定义

In [35]: f3 = DataFrame(data,columns=['name','marks','price'],index=['a','b','c'])

In [36]: f3
Out[36]:
name marks price
a   google      100      1
b     baidu          200     2
c     yahoo         300            3

定义 DataFrame 的方法,除了上面的之外,还可以使用“字典套字典”的方式。

In [40]: newdata = {'lang':{'first':'python','second':'java'},'price':{'first':5000,'second':2000}}

In [41]: f4 = DataFrame(newdata)

In [42]: f4
Out[42]:
lang price
first python   5000
second   java 2000

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

DataFrame 对象的 columns 属性,能够显示素有的 columns 名称。并且,还能用下面类似字典的方式,得到某竖列的全部内容(当然包含索引):
>>> newdata = {"lang":{"firstline":"python","secondline":"java"}, "price":{"firstline":8000}} 
>>> f4 = DataFrame(newdata) 
>>> f4 
              lang     price 
firstline     python   8000 
secondline    java     NaN 
>>> DataFrame(newdata, index=["firstline","secondline","thirdline"]) 
              lang     price 
firstline     python   8000 
secondline    java     NaN 
thirdline     NaN      NaN 

DataFrame 对象的 columns 属性,能够显示素有的 columns 名称。并且,还能用下面类似字典的方式,得到某竖列的全部内容(当然包含索引):

In [44]: f3['name']
Out[44]:
a google
b baidu
c yahoo
Name: name, dtype: object

下面操作是给同一列赋值

newdata1 = {'username':{'first':'wangxing','second':'dadiao'},'age':{'first':24,'second':25}}

In [67]: f6 = DataFrame(newdata1,columns=['username','age','sex'])

In [68]: f6
Out[68]:
username age sex
first wangxing 24 NaN
second dadiao 25 NaN

In [69]: f6['sex'] = 'man'

In [70]: f6
Out[70]:
username  age sex
first wangxing 24    man
second dadiao 25    man

可以单独的赋值,除了能够统一赋值之外,还能够“点对点”添加数值,结合前面的 Series,既然 DataFrame 对象的每竖列都是一个 Series 对象,那么可以先定义一个 Series 对象,然后把它放到 DataFrame 对象中。如下:

ssex = Series(['男','女'],index=['first','second'])

In [72]: f6['sex'] = ssex

In [73]: f6
Out[73]:
username age sex
first wangxing   24   男
second dadiao 25 女

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

In [74]: f6['age']['second'] = 30

In [75]: f6
Out[75]:
username age sex
first wangxing 24       男
second dadiao 30 女

参考/project/start-learning-python/所整理。