参考资料:
https://uqer.datayes.com/v3/community/share/54ffd96ef9f06c276f651aac
https://uqer.datayes.com/v3/community/share/5514bb11f9f06c12790415b2
在Python的Pandas包中,有两种数据结构可以很方便地用于存储复杂的数据,为Series和Dataframe。
一、Series
首先先讲一下Series,Series是DataFrame的基础。Series可以认为是个具有索引(index)的一维数组,可以和编程中另一个常用的概念Hash(哈希)联系起来。
创建一个Series的基本格式为s = np.Series(data,index=index,name=name)。可以从创建最简单的Series开始:
import pandas as pd
import numpy as np
a = np.random.rand(5)
s = pd.Series(a)
print(s)
首先引入了pandas和numpy的包,可以从输出结果中看到,左边的引索默认是从0开始的,这里需要注意的是,如果需要加入制定index,指定index的长度要和data的长度一致。如果要查询引索,可以用s.index进行。
s = pd.Series(a,index = ['1','2','3','4','5'])
print(s)
print(s.index)
另一个可选项为name。也可以通过s.name来进行访问
s = pd.Series(a,index = ['a','b','c','d','e'],name = 'my_data')
print(s)
print(s.name)
同时,字典可以通过字典dict来进行创建
d = {'a':1,'b':2,"c":3}
s = pd.Series(d)
print(s)
在访问字典的时候,可以像数组一样使用0,1,2,3...n的下标,也可以像哈希一样使用a b c d e 的引索,也可以指定条件过滤。
s = pd.Series(np.random.rand(5),index = ['a','b','c','d','e'])
print(s[0:2])
print(s['a'])
print(s[s>0.5])
二、DataFrame
DataFrame的实质是由很多Series列组成的列表,可以很方便地处理不同数据类型的列。但如果遇到像如果是全部浮点数,求逆之类的,用矩阵会更加方便。
首先可以用键为列名,值为Series的字典来创建DataFrame。可以在创建DataFrame的时候可以用index指定需要的引索,用columns来指定需要列名,如果不存在此元素则会输出NaN
d = {'one' : pd.Series([1,2,3],index = ['a','b','c']), 'two' : pd.Series([2,3,4,5],index = ['a','b','c','d'])}
df = pd.DataFrame(d)
print(df)
df = pd.DataFrame(d,index=['e','f','g','h'],columns=['three','four'])
print(df)