pandas数据操作

字符串方法

Series对象在其str属性中配备了一组字符串处理方法,可以很容易的应用到数组中的每个元素

t = pd.Series(['a_b_c_d','c_d_e',np.nan,'f_g_h'])
t

t.str.cat(['A','B','C','D'],sep=',') #拼接字符串

t.str.split('_') #切分字符串

t.str.get(0) #获取指定位置的字符串

t.str.replace("_", ".") #替换字符串

t.str.pad(10, fillchar="?") #左补齐
t.str.pad(10, side="right", fillchar="?") #右补齐
t.str.center(10, fillchar="?") #中间补齐

t.str.find('d') #查找给定字符串的位置,左边开始
t.str.rfind('d') #查找给定字符串的位置,右边开始

 


数据转置(行列转换)

dates = pd.date_range('20130101',periods=10)
dates
df = pd.DataFrame(np.random.randn(10,4),index=dates,columns=['A','B','C','D'])
df

df.T #行列转换

 


对齐

操作不同的维度需要先对齐,Pandas会沿着指定维度执行:

  • 这里对齐维度指的是对齐index
  • shift(2)指沿着时间轴将数据顺移两位
  • sub指减法,与NaN进行操作,结果也是NaN
s = pd.Series([1,3,5,np.nan,6,8,9,10,11,12],index=dates)
s

s = pd.Series([1,3,5,np.nan,6,8,9,10,11,12], index=dates).shift(2)
s

df.sub(s, axis='index')

 


对数据应用function

df.apply(np.cumsum)#cumsum 累加

 


频率

计算值出现的次数,类似直方图

s = pd.Series(np.random.randint(0, 7, size=10))
s

s.value_counts()