Pandas基本用法

嘉美伯爵

数据处理 Pandas 293

基本概念

取数据用np.array或者df.values(),axios=0按index方向排序,axios=1按columns方向排序,添加列直接df[新列名]即可,len(df)默认取行,df.shape返回[行,列]

  • series:一维数组

  • dataframe:二维数组

可以是np的二维数组或者是字典对象(必须指定索引)

  • pannel:三位数组

常用方法

  • 日期范围

  • pd.to_datetime(df['Date']) # str或不规范转换为日期

  • head

从头返回行数

  • tail

从尾返回行数

  • descibe返回常用计算值

  • mean

取平均值mean(0) index mean(1) head

  • sub做减法

  • apply

类似于map传入函数遍历

  • values()

取值

  • value_counts()

也可以使用Python的计数器高级对象

  • append

该方法和python的append一致

常用属性

  • index为索引,columns为head表头

  • df.shape[0] # 行

  • df.shape[1] # 列

  • df['Date'].dtype # 查看行列类型,查看单列

  • df['Date'].dt.month # 获取年月日

  • T 转置 不仅可以用于数学计算,还可以用来取列值

分组

  • groupby(该方法和mysql一致)

该方法可以操作多层索引,取列相同的分组

去重

  • drop_duplicates

具有keep属性,first:保留第一行,last:最后一行

# 消除
df.drop_duplicates(subset='sindex', inplace=True)

合并

  • concat(axis=0:上下)

pd级别的拼接,不是df级别的,concact合并两个Dataframe

排序

inplace:是否用排序后的数据集替换原来的数据,默认为False,即不替换;na_position:{‘first',‘last'},设定缺失值的显示位置

  • sort_value(注意axis=0沿着index方向排序,axis=1沿着head方向排序)

  • sort_index (默认行排序)
df.sort_index(axis=1) #按“列标签”升序排序
    a   b   c
2   4   1   1
0   3   2   3
1   2   3   8
3   1   2   2
  • 多列排序

在A的基础上在进行一次排序

取值

  • 基本

df[1]取列值和df.1一致(这里因为columns的dtype为int32,所以点的数,也可以点str),使用切片是按行取

  • loc

loc[:,] :表示获取所有行,获取数据使用np.array()取,loc就是按行取,loc['2020-01-01','A']取单值

  • iloc

也是按行取,但是直接对第几行或第几列操作,而不依赖于loc的index和colums,逗号表示单独去列,冒号表示连续取行列

  • iat

用于取单值,用于值替换

过滤

df1.A > 0表示对A列大于0的数据,df1>0表示所有数据

isin对数据进行过滤

替换

注意行列关系

关联

  • merge(和mysql的左关联、右关联、内关联等一致,只能操作两张表)

left 返回左表数据,即使右表不存在 right返回右表所有数据,即使左表不存在该数据用None代替,on属性为两个表共有的column,如果左表和右表的column不同,但比较的数据相同可以使用 left_on和right_one分别指定。

跨表关联

join 方法可以去关联另一张表,下面的操作是df的sindex去关联order_data的默认索引,若需关联 其他列,用on指定,默认左连接,没有的置空。

BASE = r'C:\Users\Gage\Desktop\1月工单和告警关联'
order_data = pd.read_excel(r'E:\project\testapi\apps\cutreport\new18.xlsx')
df = pd.read_excel(r'E:\project\testapi\apps\cutreport\new12.xlsx')
h = order_data.join(df.set_index('sindex'), lsuffix='_left', rsuffix='_right')

print(h)
writer = pd.ExcelWriter('new19.xlsx', engine='xlsxwriter', mode='wa')

插入

loc/iloc/append对行,insert对列

# 指定loc插入
df.loc['c']=['test','test']
>>> df
   A  B  C   D
0  1  3  3   4
1  5  6  7   8
2  1  1  1   1
3  2  3  2   3
4  7  8  9  10
>>> df.insert(0,'E',[11,12,13,14,15])     #插入一列
>>> df
    E  A  B  C   D
0  11  1  3  3   4
1  12  5  6  7   8
2  13  1  1  1   1
3  14  2  3  2   3
4  15  7  8  9  10

删除

可以使用pop/drop

>>> data_2 = df.drop('A',axis=1,inplace=False)    #删除列
>>> data_2
   B  C  D
0  3  3  4
1  6  7  8
2  1  1  1

填充

注意iloc和loc的使用

参考文档