数据清理之pandas库用法案例实操一

要求:原始数据去掉非关键字段,并按照需求字段进行多条件排序。

数据清理之pandas库用法案例实操一_第1张图片
1、导入pandas库;

2、利用pd.read_excel导入文件;

pandas.read_excel(io,sheet_name = 0,header = 0,names = None,index_col = None,usecols = None,squeeze = False,dtype = None, ...)

io:字符串,文件的路径对象。

sheet_name:None、string、int、字符串列表或整数列表,默认为0。字符串用于工作表名称,整数用于零索引工作表位置,字符串列表或整数列表用于请求多个工作表,为None时获取所有工作表。

对应操作
sheet_name=0 第一张作为DataFrame
sheet_name=1 第二张作为DataFrame
sheet_name=“Sheet1” 第一张作DataFrame
sheet_name=[0,1,'Sheet5'] 第1页,第2页和第5页作为DataFrames的字典。

header:指定作为列名的行,默认0,即取第一行的值为列名。数据为列名行以下的数据;若数据不含列名,则设定 header = None。

names:默认为None,要使用的列名列表,如不包含标题行,应显示传递header=None

index_col:指定列为索引列,默认None列(0索引)用作DataFrame的行标签。

usecols:int或list,默认为None。

  • 如果为None则解析所有列
  • 如果为int则表示要解析的最后一列
  • 如果为int列表则表示要解析的列号列表
  • 如果字符串则表示以逗号分隔的Excel列字母和列范围列表(例如“A:E”或“A,C,E:F”)。范围包括双方。

squeeze:boolean,默认为False,如果解析的数据只包含一列,则返回一个Series。

dtype:列的类型名称或字典,默认为None。数据或列的数据类型。例如{'a':np.float64,'b':np.int32}使用对象保存存储在Excel中的数据而不解释dtype。如果指定了转换器,则它们将应用于dtype转换的INSTEAD。

skiprows:省略指定行数的数据,从第一行开始。

skipfooter:省略指定行数的数据,从尾部数的行开始。

dtype:字典类型{'列名1':数据类型,‘列名’:数据类型},设定指定列的数据类型。

3、读取所需要的关键字段;

4、根据字段进行多条件排序;DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)

  • 参数说明

参数 说明
by 指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
axis 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0
ascending 是否按指定列的数组升序排列,默认为True,即升序排列,False,降序排列。
inplace 是否用排序后的数据集替换原来的数据,默认为False,即不替换
na_position {‘first’,‘last’},设定缺失值的显示位置

5、保存并写入新的工作表;

DataFrame.to_excel(excel_writer, sheet_name='Sheet1', na_rep='',
 float_format=None, columns=None, header=True, index=True, 
 index_label=None, startrow=0, startcol=0, engine=None, 
 merge_cells=True, encoding=None, inf_rep='inf', verbose=True, 
 freeze_panes=None)
excel_writer : 字符串或ExcelWriter 对象;文件路径或现有的ExcelWriter。

sheet_name :字符串,默认“Sheet1”;将包含DataFrame的表的名称。

na_rep : 字符串,默认‘ ’ ,缺失数据表示方式。

float_format : 字符串,默认None 格式化浮点数的字符串。

columns : 序列,可选 ,要编写的列。

header : 布尔或字符串列表,默认为Ture。 写出列名。如果给定字符串列表,则假定它是列名称的别名。

index :布尔,默认的Ture 写行名(索引)

index_label : 字符串或序列,默认为None。 如果需要,可以使用索引列的列标签。如果没有给出,标题和索引为true,则使用索引名称。如果数据文件使用多索引,则需使用序列。

startrow : 左上角的单元格行来转储数据框

startcol : 左上角的单元格列转储数据帧

engine : 字符串,默认没有 使用写引擎 - 您也可以通过选项io.excel.xlsx.writer,io.excel.xls.writer和io.excel.xlsm.writer进行设置。

merge_cells : 布尔,默认为Ture 编码生成的excel文件。 只有xlwt需要,其他编写者本地支持unicode。

inf_rep : 字符串,默认“正” 无穷大的表示(在Excel中不存在无穷大的本地表示)

freeze_panes : 整数的元组(长度2),默认为None。 指定要冻结的基于1的最底部行和最右边的列

#导入pandas库
import pandas as pd

#读取Excel文件,加入两个变量,实际可以用一行代码实现,df_1 = pd.DataFrame(pd.read_excel(io,sheet_name=,...))

name_path = 'A.xls'
user_data = pd.read_excel(name_path)
df_1 = pd.DataFrame(user_data)

#筛选有效关键列字段
df_1 = df_1[['资产编码', '资产名称', '开始使用日期', '分类名称', '使用部门', '规格型号', '存放地点', '数量', '资产原值']]

#首先按照“存放地点”、然后按照“使用部门”,在按照“分类名称”,多条件升序排列
df_1 = df_1.sort_values(['存放地点','使用部门','分类名称'], ascending=True)

#写入并保存文件
filepath = "B.xlsx"
writer = pd.ExcelWriter(filepath)
df_1.to_excel(excel_writer=writer,index=False,sheet_name='Sheet1')
writer.save()
#writer.close(),这个不需要加,加入会报错。

最终实现结果展示:

数据清理之pandas库用法案例实操一_第2张图片

 

你可能感兴趣的:(数据清理,python)