Skip to content

Commit 0700457

Browse files
committed
pandas1
1 parent 5566455 commit 0700457

1 file changed

Lines changed: 31 additions & 31 deletions

File tree

311.md

Lines changed: 31 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,21 @@ DataFrame是一种二维的数据结构,非常接近于电子表格或者类
106106
>>> data = {"name":["yahoo","google","facebook"], "marks":[200,400,800], "price":[9, 3, 7]}
107107
>>> f1 = DataFrame(data)
108108
>>> f1
109-
marks name price
110-
0 200 yahoo 9
111-
1 400 google 3
112-
2 800 facebook 7
109+
marks name price
110+
0 200 yahoo 9
111+
1 400 google 3
112+
2 800 facebook 7
113113

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

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

118118
>>> f2 = DataFrame(data, columns=['name','price','marks'])
119119
>>> f2
120-
name price marks
121-
0 yahoo 9 200
122-
1 google 3 400
123-
2 facebook 7 800
120+
name price marks
121+
0 yahoo 9 200
122+
1 google 3 400
123+
2 facebook 7 800
124124

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

@@ -142,9 +142,9 @@ DataFrame是一种二维的数据结构,非常接近于电子表格或者类
142142
>>> f3 = DataFrame(data, columns=['name', 'price', 'marks', 'debt'], index=['a','b','c'])
143143
>>> f3
144144
name price marks debt
145-
a yahoo 9 200 NaN
146-
b google 3 400 NaN
147-
c facebook 7 800 NaN
145+
a yahoo 9 200 NaN
146+
b google 3 400 NaN
147+
c facebook 7 800 NaN
148148

149149
读者还要注意观察上面的显示结果。因为在定义f3的时候,columns的参数中,比以往多了一项('debt'),但是这项在data这个字典中并没有,所以debt这一竖列的值都是空的,在Pandas中,空就用NaN来代表了。
150150

@@ -153,17 +153,17 @@ DataFrame是一种二维的数据结构,非常接近于电子表格或者类
153153
>>> newdata = {"lang":{"firstline":"python","secondline":"java"}, "price":{"firstline":8000}}
154154
>>> f4 = DataFrame(newdata)
155155
>>> f4
156-
lang price
157-
firstline python 8000
158-
secondline java NaN
156+
lang price
157+
firstline python 8000
158+
secondline java NaN
159159

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

162162
>>> DataFrame(newdata, index=["firstline","secondline","thirdline"])
163-
lang price
164-
firstline python 8000
165-
secondline java NaN
166-
thirdline NaN NaN
163+
lang price
164+
firstline python 8000
165+
secondline java NaN
166+
thirdline NaN NaN
167167

168168
如果额外确定了索引,就如同上面显示一样,除非在字典中有相应的索引内容,否则都是NaN。
169169

@@ -186,10 +186,10 @@ DataFrame对象的columns属性,能够显示素有的columns名称。并且,
186186

187187
>>> f3['debt'] = 89.2
188188
>>> f3
189-
name price marks debt
190-
a yahoo 9 200 89.2
191-
b google 3 400 89.2
192-
c facebook 7 800 89.2
189+
name price marks debt
190+
a yahoo 9 200 89.2
191+
b google 3 400 89.2
192+
c facebook 7 800 89.2
193193

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

@@ -199,26 +199,26 @@ DataFrame对象的columns属性,能够显示素有的columns名称。并且,
199199
将Series对象(sdebt变量所引用) 赋给f3['debt']列,Pandas的一个重要特性——自动对齐——在这里起做用了,在Series中,只有两个索引("a","c"),它们将和DataFrame中的索引自动对齐。于是乎:
200200

201201
>>> f3
202-
name price marks debt
203-
a yahoo 9 200 2.2
204-
b google 3 400 NaN
205-
c facebook 7 800 3.3
202+
name price marks debt
203+
a yahoo 9 200 2.2
204+
b google 3 400 NaN
205+
c facebook 7 800 3.3
206206

207207
自动对齐之后,没有被复制的依然保持NaN。
208208

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

211211
>>> f3["price"]["c"]= 300
212212
>>> f3
213-
name price marks debt
214-
a yahoo 9 200 2.2
215-
b google 3 400 NaN
216-
c facebook 300 800 3.3
213+
name price marks debt
214+
a yahoo 9 200 2.2
215+
b google 3 400 NaN
216+
c facebook 300 800 3.3
217217

218218
这些操作是不是都不陌生呀,这就是Pandas中的两种数据对象。
219219

220220
------
221221

222222
[总目录](./index.md)   |   [上节:Pandas使用(1)](./310.md)   |   [下节:Pandas使用(3)](./312.md)
223223

224-
如果你认为有必要打赏我,请通过支付宝:**qiwsir@126.com**,不胜感激。
224+
如果你认为有必要打赏我,请通过支付宝:**qiwsir@126.com**,不胜感激。

0 commit comments

Comments
 (0)