numpy可以处理数值型数据。pandas可以处理其他的数据类型。pandas对数值类型处理时,也是调用numpy。
官方文档
pandas常用数据类型
Series 一维带标签的数组
DataFrame二维,Series容器
创建数组
通过Series与列表创建一维数组
import pandas
a=pandas.Series([1,2,3,4])#默认第一列索引0到n-1
b=pandas.Series([1,2,3,4],index=['a','b','c','d'])#索引设置为index中的内容
print(type(a))
print(a,'\n',b)
结果里第一列就是标签
通过Series与字典创建一维数组
import pandas
b={'name':'temmie','age':20,'type':'dog'}
a=pandas.Series(b)#使用字典创建
print(a)
你看到了每一次输出,后面都有类型,这个语句也可以进行numpy一样的类型赋予和类型修改,语句是一样的
Series的切片与索引
索引
import pandas
b={'name':'temmie','age':20,'type':'dog'}
a=pandas.Series(b)#使用字典创建
print(a['name'],a[0])#使用索引或直接输入第几行
import pandas
b={'name':'temmie','age':20,'type':'dog'}
a=pandas.Series(b)#使用字典创建
print(a[['name','type']],'\n','********')#使用索引取不连续的内容
print(a[[0,2]],'\n','********')
print(a[:2],'\n','********')#取前两个
如果索引的内容没有对应的,会返回nan
布尔索引同numpy中的方式,a[a>4]即取内容大于4的部分。
取数组的索引 a.index可以取出a数组索引。
取数组的值 a.values可以取出a数组的内容。
通过DataFrame与列表创建多维数组
内容写入方法与numpy相同
import pandas
a=pandas.DataFrame([[1,2,3,4],[2,3,4,5],[3,4,5,6]])
print(a)
注意,第一列 (index行索引)axis=0与第一行(columns列索引)axis=1,内容时里面的块。
你也可以指定索引内容。
import pandas
a=pandas.DataFrame([[1,2,3,4],[2,3,4,5],[3,4,5,6]],index=list('abc'),columns=list('abcd'))
print(a)
通过DataFrame与字典创建多维数组
import pandas
b={'name':['temmie01','temmie02'],'age':[10,20]}
a=pandas.DataFrame(b)
print(a)
b也可以写作:
b=[{'name':'temmie01','age':10},{'name':'temmie02','age':20}]
如果数值缺失,缺的地方会自动用nan补全。
DataFrame的索引
前面已经说了DataFrame是Series的容器,也就是说它可以拆成Series在单独在一列中索引。方括号写数字是行操作,写字符串是列操作。
import pandas
b={'name':['temmie01','temmie02'],'age':[10,20],'type':['dog','dog'],'num':[122,133]}
a=pandas.DataFrame(b)
print(a['name'][0])
a.sort_values按照某一列进行排序。
a.loc 通过标签索引行数据
a.iloc 通过位置获取行数据
import pandas
b={'name':['temmie01','temmie02'],'age':[10,20],'type':['dog','dog'],'num':[122,133]}
a=pandas.DataFrame(b)
print(a.loc[0],'\n','**********')#这里的0是标签
print(a.loc[0,'name'],'\n','**********')#这里的0是标签
print(a.iloc[0,:],'\n','**********')#这里的0是位置
print(a.iloc[0,0],'\n','**********')#这里的0是位置
布尔索引
同前面的使用方法
a[a[指定的列名]>条件]
这里面不能使用连续的条件了(例如<内容<),这里需要分别判断再通过逻辑关系组合。
pandas读取外部数据
读取csv文件
pandas.read_csv(‘路径’)
pandas.read还有很多选项,可以在输入read时根据提示选择。
mongodb的这里先不记录了,还没用到。
处理nan数据
pandas在计算均值等内容时,不会像numpy一样计算时考虑nan。
pandas.isnull(数组) 可以判断数组中是否有nan,返回数组中True的地方为nan,False不是nan。(notnull与之相反)
数组.dropna(axis=0,how=‘any’,inplace=内容) 删除nan的行或列。axis=0删除行,axis=1删除列。how用于设定删除条件,any表示只要出现nan则删除,all表示行(或列)全是nan才会删除。inplace用来替换nan位置的内容,是可选项。
数组.fillna(值) 可以把数组中nan的位置填充为 值 。值也可以写入表达式。例如: 数组.mean 表示均值。