最近在学习数据分析,对学的进行了些整理,方便以后查看。欢迎交流。
下面的代码用到的模块都事先做了导入:
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
一、各对象的理解
Numpy创建的对象其实是一个多维的数组(ndarray),n(多),d(dim维度),array(数组)
Pandas创建的对象有Series和DataFrame:Series我把它理解为1darray(1维的数组);DataFrame其实就像一个表格一样
二、从区别中把握ndarray,Series,DataFrame这3种数据结构
(一)对象的创建
都可以以自己为对象
都可以以列表(list)的形式导入数据,但是区别是
data=[1,2,3,4,5,6]
data2=[[1,2,3,4,5,6],[2,3,4,5,6,7]]
data3={'one':1,'two':2,'three':3}
ndarray只能通过list(包括嵌套的list)创建:
arr=np.array(data);
arr2=np.array(data2)
结果如图,arr1是一个1行6列的数组,arr2是2行6列的数组。
series可以通过list和dict两种类型的数据创建
创建的格式是Series=Series(data,index),若data是dict类型,index指定了后会按index的顺序按行排序,不存在的index会赋予Nan(缺失值)
obj=Series(data)
obj2=Series(data2) 注:用嵌套列表时,内层的列表整个都作为了一个元素
obj3=Series(data3) 用字典(dict)来导入时,字典的key成了Series的索引(index);字典的value成了Series的value
DataFrame也可以通过list和dict来创建(毕竟在同一个模块)
可以看成是由n个series对象组成,每个series作为一列,并且还有自己的名字(如果不指定,就和index一样从0开始依次命名,这每一列实际叫做column。
创建格式是frame=DataFrame(data,columns,index),其中colums,indexs是默认参数(默认从数字0开始生成),可以不指定。index:在没指定的情况下只是替换了原来默认的index,在指定index的情况下再设置index参数了相当于排序。colums同index。
1.在以列表数据导入时,DataFrame对象和Series对象类似
frame=DataFrame(data)
frame2=DataFrame(data2)
2.以字典传入数据时,key作为列序列,value作为这个序列的值(多个时以list表示)
data4={'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]}
frame4=DataFrame(data4)
frame5=DataFrame(data4,columns=['c','b','a'])
frame6=DataFrame(data4,columns=['c','b','a'],index=['one','two','three'])
frame7=DataFrame(frame6,columns=['c','b','d'],index=['three','two'])
frame8=DataFrame(frame6,columns=['c','b','d'],index=['three','tw'])
3.还可以用嵌套字典,外层的key作为列,内层的key作为index
data5={'a':{'one':1,'two':4,'three':7},'b':{'one':2,'two':5,'three':8},'c':{'one':3,'two':6,'three':9}}
frame9=DataFrame(data5)
持续更新,2017.5.15