DataFrame基础

DataFrame基础

1.定义

  • DataFrame是一个[表格型]的数据结构,DataFrame由按一定顺序排列的多列数据组成,
  • 设计初衷会将Series的使用场景从一维拓展到多维,DataFrame即有行索引,也有列索引
  • 行索引:index
  • 列索引:cluomns
  • 值:values

2.DataFrame的创建

  • ndarray创建
  • 字典创建
s1=DataFrame(data=[[1,2,3],[4,5,6]],index=['a','b'],columns=['A','B','C'])
s2=DataFrame(data=np.random.randint(0,100,size=(4,8)))

3.DataFrame的属性

  • values,columns,index,shape
dic={
    '张三':[120,121,111,122],
    '李四':[1,2,3,4]
}
s3=DataFrame(data=dic,index=['语文','数学','英语','理综'])
s3.values# 值
s3.columns#列索引
s3.index#行索引
s3.shape#形状

4.DataFrame索引操作

  • 对行进行索引 df.loc[index]

  • 对列进行索引 df[col]

  • 对元素进行索引 df.iloc[index,col]

  • iloc:通过隐式索引区行

  • loc:通过显式索引区行

  • 【注意】索引取列,如果索引取列的时候,有显示的列索引,索引取列只可以使用显示索引

s4=DataFrame(data=np.random.randint(0,100,size=(5,4)),index=['a','b','c','d','e'],columns=['A','B','C','D'])
#取一列
s4['A']
s4[['A','B']]#取多列
# 索引取行
s4.iloc[0]#iloc:通过隐式索引区行
s4.loc['a'] #loc:通过显式索引区行
# 索引取值
s4.iloc[0][0]

5.DataFrame切片操作

  • 对行进行切片df[index1:index3]
  • 对列进行切片df.loc[:,col1:col3]
s4=DataFrame(data=np.random.randint(0,100,size=(5,4)),index=['a','b','c','d','e'],columns=['A','B','C','D'])
# 对行进行切片
s4[0:3]
s4['a':'c']
# 对列进行切片
s4.iloc[:,0:3]
s4.loc[:,'A':'C']

函数

  • pd.to_datetime(data[‘date’]) ,数据类型转为时间类型
  • data.set_index(‘date’),设置列索引
  • data[‘close’].shift(1),数据整体下移一位
  • new_data.resample(‘M’), 将每年的月份的第一行取出来,取出的索引有bug

6.级联操作

  • pd.concat,pd.append

  • pandas使用pd.concat函数,与npconcatenate函数类似,只是多了一些参数:

    • objs
    • axis=0
    • keys
    • join=‘outer’/‘inner’:表示级联的方式,outer会将所有的项进行级联
    • (忽略匹配或不匹配),而Inner只会将匹配的项级联到一起,不匹配的不级联
    • ignore_index=False

7.合并操作

  • merge与concat的区别在于,merge需要依据某一共同列来进行合并

  • 使用pd.merge()合并时,会自动依据两者相同column名称的那一列,作为key来进行合并

  • 注意每一列元素的顺序不要求一致

  • key的规范化

    • 当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名
  • 当两张表没有可进行连接的列时,可使用left_on和right_n手动指定merge中左右两边的那一列作为连接的列

你可能感兴趣的:(python数据分析基础,python,DataFrame)