2.pandas的数据结构
对于文件来说,读取只是最初级的要求,那我们要对文件进行数据分析,首先就应该要知道,pandas会将我们熟悉的文件转换成了什么形式的数据结构,以便于后续的操作
数据结构
pandas对文件一共有两种数据结构的划分,第一种是二维的DataFrame,第二种是一维的Series
简单的来说就是,你看到的表,就是DataFrame,而构成表的每一行或者每一列都是Series
Series
列表创建Series
仅仅有数据列表就可以产生最简单的Series
l = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
s1 = pd.Series(l)
print(s1)
0 a
1 b
2 c
3 d
4 e
5 f
6 g
dtype: object
# 左侧为索引,右侧为数据
根据上篇文章我们可以获取这个Series的索引和数据
print(s1.index)
print(s1.values)
RangeIndex(start=0, stop=7, step=1)
['a' 'b' 'c' 'd' 'e' 'f' 'g']
其实不光可以用数字来进行索引,也可以自定义索引
s1 = pd.Series(l,index=['q','w','e','r','t','y','u'])
q a
w b
e c
r d
t e
y f
u g
dtype: object
字典创建Series
d = {
'a':1,
'b':2,
'c':3
}
s1 = pd.Series(d)
print(s1)
a 1
b 2
c 3
dtype: int64
字典创建的就会将字典的键默认当做索引
查询数据
跟字典其实是差不多的意思,可以根据索引来查
d = {
'a':1,
'b':2,
'c':3
}
s1 = pd.Series(d)
print(s1['b'])
2
也可以查询一堆数据
d = {
'a':1,
'b':2,
'c':3
}
s1 = pd.Series(d)
print(s1[['b','c']])
b 2
c 3
dtype: int64
DataFrame
既然这是个二维的数据结构,也就意味着,它不止有列索引,同时还应该有行索引
根据多个字典创建DataFrame
d = {
'state':['s1','s2','s3'],
'year':['2020','2019','2018'],
'inp':['a','b','c']
}
s1 = pd.DataFrame(d)
print(s1)
state year inp
0 s1 2020 a
1 s2 2019 b
2 s3 2018 c
可以通过上篇文章快速的获取列索引和行索引
d = {
'state':['s1','s2','s3'],
'year':['2020','2019','2018'],
'inp':['a','b','c']
}
s1 = pd.DataFrame(d)
print(s1.index)
print(s1.columns)
RangeIndex(start=0, stop=3, step=1)
Index(['state', 'year', 'inp'], dtype='object')