Pandas是python的核心数据分析支持库,它提供了快速、灵活、明确的数据结构,旨在简单、灵活地处理关系型数据。
Series是一种类似于一维数组的数据结构,它由一组数据(可以是不同的数据类型)以及一组与之相关的数据标签index(即索引)组成,还可以指定Series的名称。
DataFrame是一种表格型的数据结构。它的每一列可以是不同的值类型(例如布尔型、数值型、字符串等),此外它既有行索引index,又有列索引columns。我们可以将它看成是由Series组成的字典(将每一列看成是一个Series)。
pd.Series(
data=None, #数据列表
index=None, #索引列表
name=None, #Series名字
dtype=None,
copy=None,
fastpath=Flase)
示例:
tmp=pd.Series(data=[23,'lucky'],index=['age','name'],name='people')
print(tmp)
运行结果:
pd.Series(
{}
name=None,
dtype=None,
copy=False,
fastpath=False)
示例:
tmp_dict=pd.Series({'age':23,'name':'Mary'},name='people')
print(tmp_dict)
运行结果:
import pandas as pd
tmp_dict=pd.Series({'age':23,'name':'Mary','gender':'M','place':'shanxi'},name='people')
r=tmp_dict['age']
print(r)
r=tmp_dict[0]
print(r)
r=tmp_dict[0:2]
print(r)
r=tmp_dict['age':'gender']
print(r)
r=tmp_dict[[0,2]]
print(r)
r=tmp_dict[['age','gender']]
print(r)
由Series构成逻辑表达式时(例如将一个Series与一个数值进行比较),广播机制会将Series中的每一个值代入逻辑表达式,因此最终会得到一个与原Series形状相同的且全部由布尔值构成的Series,每一个位置的布尔值对应该位置的比较结果。
如果继续用该逻辑表达式对Series进行查找,那么结果会返回一个由满足条件的值(即对应位置为True)构成的Series,但是值得注意的是,结果中会沿用原来Series的值的索引。
举例:
s=pd.Series([23,45,56,34,11,19])
r1=s>30 #返回由True和False构成的Series
r2=s[s>30] #返回满足条件的值构成的Series,注意会沿用之前的索引
print('r1\n',r1)
print('r2\n',r2)
运行结果:
如果不想沿用之前的索引,也可以通过reset_index()函数给索引赋新名字。这个方法的原理就是把原本的index作为新的一列与原来的Series结合变成了一个新的DataFrame。如果不想要index这一列,我们可以drop去掉即可,使用reset_index(drop=True)。
举例:
r3=r2.reset_index()
print(r3,'\n',type(r3))
举例:
r4=r2.reset_index(drop=True)
print(r4,'\n',type(r4))
举例:
s=pd.Series([23,23,45,45,56,34,11,19])
print(s.isin([23,45]))
s=pd.Series(['zhangsan','lisi','wangwu','zaoliu'])
可以通过 s.str.方法 来调用字符串的各种方法,例如replace(old,new)、startswith()等。
剩余知识点详见下期blog哟!