1.Pandas简介
Pandas基于NumPy的一种工具,纳入了大量库和一些标准的数据模型。
Pandas基于两种数据类型:Series与dataframe
2.Series对象
Series类似一维数组,Series可以自定义标签,也就是索引(index)。
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
#创建Series
sel=Series([1,2,3,4]) #不输入索引使,默认索引为[0,1,...,len(data)-1]
sel=Series(data=[1,2,3,4],index=['a','b','c','d'])
sel=Series(data=[1,2,3,4],index=list('abcd'))
sel=pd.Series([1,2,3,4],['a','b','c','d'])
print(sel)
#获取数据
print(sel.values)
#获取索引
print(sel.index)
#获取索引和值对
print(list(sel.iteritems()))
#将字典转为Series
se3=Series(dict)
数据索引
sel=Series(data=[1,2,3,4],index=list('abcd'))
print('索引下标',sel['c'])
print('位置下表',sel[2])
#获取不连续的数据
print('索引下标',sel[['c','a']])
print('位置下表',sel[[1,3]])
#切片
print('位置切片',sel[1:3]) #左闭右开
print('索引切片',sel['b':'d']) #左右都包含
索引赋值与计算
sel.index=list('dcba')
#reindex会重新索引后返回一个新的Series
#Series将基于index进行计算,支持np的数组运算
3.DataFrame
#1. 创建DataFrame
# 创建二维数组
import pandas as pd
from pandas import Series,DataFrame
import numpy as np
df1=pd.DataFrame(np.arange(9).reshape(3,3),index=['bj','sh','gz'],columns=['a','b','c'])
print(df1)
print(df1.index.tolist())
df3=df1.rename(index={'bj':'beijing'},columns={'a':'aa'})
print(df3)
插入和修改数据
df1=pd.DataFrame({'X':range(5),'Y':range(5),'S':list('abcde'),'Z':[1,1,2,2,2]})
print(df1)
print('\n')
col=df1.columns.tolist()
col.insert(1,'A')
df1=df1.reindex(columns=col)
print(df1)
df1.insert(1,'B',[2,3,4,5,99])
print(df1)
df1.iloc[1]=[0,0,0,0,0,0]
print(df1)
连接两个DataFrame
df1=pd.DataFrame(np.arange(6).reshape(3,2),columns=['four','five'])
df2=pd.DataFrame(np.arange(6).reshape(2,3),columns=['one','two','three'])
result=pd.concat([df1,df2],axis=1)
print(df1)
print(df2)
print(result)
按轴计算
df1.mean(axis=1)
#去除和填补空值
pd.dropna(how='all') #默认为any即有空值就删除,all为全空删除
pd.fillna(0) #用0填补空值,默认生成一个新的DataFrame,设置inplace=True则在原来的基础上修改
#查看和删除重复值
df.duplicated()
df.drop_duplicated() #可以指定删除行,设置inplace=True则在原来的基础上修改
#数据合并
df1.join(df2, how='left') #未指定时按index匹配
df1.merge(df2, how='left') #未指定时按columns中同字段名匹配