0.引言
dataframe是pandas的数据类型
np.array是numpy的数据类型
list和dict是python的数据类型
series是pandas的一种数据类型,Series是一个定长的,有序的字典,因为它把索引和值映射起来了。(df提一行就是一个Series)
1.list
list和arry都是[], 有的是不区分,只认python里面只有数组(认为列表list和数组是一个道理,有不同点而已)
list是一个一维列表,我们可以利用下标进行值得追踪(python第一个元素的下标从0开始),能存储任何数据,每个元素可变,类型可变,其方便之处在于可用append函数添加。
c=[1,2,3,4,5]
或者
c = list()
c.append(1)
...
c.append(5)
print(c[0]) #取一个元素
print(c[0:3]) #连续取前3个元素
print(c.index(1)) #返回元素的位置
2.np.array
python中的list和array的可以通过索引查找数值; 但是不同之处:
list是列表,但是不能对整个列表进行数值运算
b=[1,2]
b[1]
Out[3]: 2
type(b)
Out[4]: list
b+b #列表的合并 等同于b.extend(b)
Out[5]: [1, 2, 1, 2]
array是数组,但是能对整个数组进行数值运算
a=np.array([1,2])
a[1]
Out[9]: 2
type(a)
Out[10]: numpy.ndarray
a+a
Out[11]: array([2, 4])
3.Serise:
Serise:属于pandas库,相当于np.array,与list不同的是,Series带有索引index
S1=pd.Series([1,2,3,4,5])
S2=pd.Series([1,2,3,4,5],index=['a','s','d','f','g'])
当Series没有规定索引时,会自动生成数字索引,可以通过索引获取或更改数据,且索引和数据值之间是相关联的。
前面说到List不能直接做一些复杂的运算,但是Series可以。因此,需要将List转换成Series,这里用一个相关系数做例子:
from pandas import Series
#生成两个List
a=[1,2,3,4,5]
b=[8,6,5,3,1]
#列表值转化成Series
S1=Series(a)
S2=Series(b)
#计算相关系数
cor=S1.corr(S2)
print(cor)
-0.9948497511671097
#将Series再转化成List
a1=S1.tolist()
b1=S2.tolist()
4.DataFrame
DataFrame:可以直接把它想象成Excel表格,有行表头与列表头,表头可以自己定义,可以是非数字的。
四个重要属性:index:行索引;columns:列索引;values:值的二维数组;name:名字。
a=pd.DataFrame(np.random.rand(4,5),index=list("ABCD"),columns=list(abcde'))
下面主要讨论从DataFrame的构建和提取
1)利用列表(列表长度要保证相同)先构建字典,然后将字典转化成DataFrame
#构建两个字典
p={'N':[1,2,3]}
m={'O':[4,5,6]}
#将字典构建成DataFrame
dfp=pd.DataFrame(p)
dfm= pd.DataFrame(m)
#将两个DataFrame进行拼接,axis=1索引拼接
dfc=pd.concat([dfp,dfm],axis=1)
2)提取DataFrame中的元素
dfc.loc[:,'N'] #获取N列,且去除的一列数值是Series
Out[41]:
0 1
1 2
2 3
Name: N, dtype: int64
dfc.iloc[2,1] #loc取index,iloc取数值标签
Out[43]: 6
dfc['N'] #获取索引为N的一列数据
Out[44]:
0 1
1 2
2 3
Name: N, dtype: int64
dfc.ix[0] #获取索引为0的一列数据(这个没理解,有错)
5. Dict字典
Dict:相当于一个地址薄,以键(名字)值(具体的详细信息)对的形式存在,并且键是唯一的(若一个键出现两次,前一个值会被后一个值代替,所以键不可以用List),字典中的键值对没有顺序
#建立字典
dict={'Name':'Zara','Age':7,'Name':'Manni'}
#提取字典中的信息
dict['Name']
Out[51]: 'Manni'
#字典更新
dict['Age']=15
#创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
dict.fromkeys(seq[,val]) #写的不对
6.元组
元组与列表类似,但是列表不可以更改,元组的形式是圆括号“()”,列表是中括号“[]”,元组中的值可以通过下标进行访问
tup=('Google','Runoob',1997,2000)
Python数据的保存方式
1.pandas保存
df.to_csv()