导入模块
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
1.索引
#创建一个s1
s1=Series(range(1,5),index=list('ABCD'))
#索引不可修改否则报错 如下
s1.index[0]='a'
#但是可以整体替换
s1.index=list('abcd')
索引的删除
obj.drop('index,axis=0,inplace=False)默认删除行索引
obj.drop('index,axis=1,inplace=False)删除列索引
默认都是返回新值除非inplace=True。
#创建一个df1
df1 = DataFrame(
np.arange(16).reshape(4,4),
index = list('abcd'),
columns = 'one/two/three/four'.split('/')
)
#删除a行
df1.drop('a')
#删除a和c行
df1.drop(['a','c'])
#删除two和four列
df1.drop(['two','four'],axis=1)
索引的选取与过滤
选取就是读取
过滤就是选取想要的数据
#创建一个s2
list2=list(range(6,13))
np.random.shuffle(list2)
s2=Series(list2,index=list('abcdefg'))
#index:a,value:6
for each in s2.index:
print(f'index:{each},value:{s2[each]}')
#找出大于9的
for each in s2.index:
if s2[each]>9:
print(f'index:{each},value:{s2[each]}')
Series支持bool序列读取
s2<9
s2[s2<9]
s2[s2%2==0]
#重置索引,会匹配,匹配不上则NAN
s2.reindex(list('ABCDEfgH'))
#fill_value=xxx,填充nan的位置为xxx
s2.reindex(list('ABCDEfgH'),fill_value=0)
2.算数运算与数据对齐
Series的运算
#准备俩Series
s1=Series([1,2,3,4],index=list('abcd'))
s2=Series([5,6,7,8,9],index=list('abefd'))
#算数加法
s1+s2
s1.add(s2)
#在执行 加法 前 把匹配不上的位置换成指定值 如0 然后执行加法
s1.add(s2,fill_value=0)
#直接对莫对象填充nan xxx.fillna(yyy) 将xxx中nan换成yyy
s1.add(s2).fillna(0)
DataFrame算数运算
#创建df1,df2
df1=DataFrame(np.arange(9).reshape(3,3),
index=list('ABC'),
columns=list('abc'))
df2=DataFrame(np.arange(10,30).reshape(4,5),
index=list('BCDE'),
columns=list('acdef'))
df.add(df2,fill_value=xxx)
会在加之前 填充规则:行列组合有一个值就填充,都没有的就不填充
df1.add(df2,fill_value=666).fillna(0)
#减法
df1.sub(df2)
#乘法
df1.mul(df2)
#除法
df1.divide(df2)
#取模
df1.mod(df2)
DataFrame 与 Series运算
df列Series行索引匹配,能匹配上则运算,匹配不上则nan
df1.add(s1)
df1.add(Series([10,20,30,40,50],index='one,two,three,four,c'.split(',')))