Excel是微软的经典之作,几乎可以满足我们日常工作的所有需求,但是在处理海量数据时,Excel在效率及性能方面就显得很吃力。正因为Pandas在数据处理方面有着独特的优势,所有掌握pandas库处理excel格式的数据就显得十分必要。
目录excel文档新建
读取excel文档
行列操作
空值自动填充
行列函数运算
excel数据排序
excel数据按条件筛选
# 1. 创建excel文件
在jupyter中导入pandas模块,新建一个aaa.xls的excel文件
这里注意以下点:
1> window中使用反斜杠 \不表示目录路径,这里使用正斜杠 /
2> 定义index时,column的名称与定义时保持一致
3> excel文件后缀 .xlsx可能会报错,建议采用 .xls新建excel文件
# 2. 读取excel文件
1> 读取常规的excel数据表,查看文档行列信息读取excel
2> header
数据表sheet头部有空值或者其他无用的数据,通过定义 header 的数值来指定开始读取的行。
header = 2 :表示从数据表sheet的第3行开始读取header
3> 重命名列
(1)将给定的Sheet数据表的杂乱命名进行规范重命名
.columns=[ ‘A’,‘B’,‘C’……]
(2)将默认index替换为 ‘NUMS’列
.set_index('NUMS',inplace)重命名列名
4> 指定 index 读取并存储
在读取 excel 时指定index列,并保存
注意格式:
index_col = ‘column_name’指定index读取并存储
# 3. 行列的操作
1> Series构建DataFrame
Series 以字典{ } 形式传入,则为一列 column 的形式存储
Series 以 列表[ ] 形式传入,则为一行 row 的形式存储Series构建DataFrame
2> 读取有效范围单元格数据
Excel中有空行空列或存在无效数值,在读取数据时可以使用
skiprows= n: 跳过前n行
usecols = "A:N":读取A至N列
来定义读取数据范围值读取有效范围值
# 4. 空值填充替换
1> for循环迭代填充
(1)Excel中有许多NaN空值,使用 for 循环迭代填充
.at[ i ] 进行赋值at[ i ]
(2) float转str
注意NaN默认为float类型,在使用迭代填充后,都以float类型显示。所以要将 ‘ID’ 列以整型 int 显示,我们需要在read_excel时将 dtype指定为 str 类型,以str类型显示。转为str显示
2> 交替填充
将‘InStore’列交替以‘Yes’和‘No’替换NaN,这里使用 if..else 当做表达式来控制填充交替填充控制
3> 日期填充
导入datetime模块,引用 date,timedelta库
(1)按天增加
start_date =date(2020,1,1): 注意括号中日期分割符号为逗号
timedelta(days = i): 这里可以控制按 days 、hours、mins进行增加按天增加
(2)按月增加
月份增加比较麻烦,需要自定义一个计算月份的函数
def add_month(d,delta_m)按月增加
(3)按年增加
在现有的年份上增加,控制月与天不变按年增加
存储前调整Excel文档中的 index 列设置index存储
# 5. 函数计算填充
1> 列与列相乘计算
(1)基本的列与列相乘运算
ListPrice * Discount = Price列与列相乘
(2) 迭代循环实现列与列运算
for循环可以实现单元格与单元格的运算
for i in filename.index:for 迭代相乘
(3) 迭代循环实现指定的行中数据相乘
计算指定范围5-15行的单元格数据运算
for i in range(5,15):指定范围的行数据
2> 每行数据增量
(1) 直接进行列运算
对所有行的某列值全部增加定量值
如:ListPrice的值每行增加3列 + 值 运算
(2) 调用lambda实现
使用 lambda 表达式来实现每行增加3
如:ListPrice的值每行增加3lambda x:x + 3
# 6. 数据排序
1> 指定单列排序
调用 .sort_values()方法对指定的单列进行排序
注意: inplace 与 ascending 的值单列排序
2> 多列多重排序
调用 .sort_values()方法对指定的多列进行排序,如我们分别查看 Worthy 为 No 和 Yes中的价格从高到低排列情况
注意: inplace 与 ascending 的值多重排列
# 7. 数据筛选
例:
筛选出文件中 年龄在 [ 18,30)间,且分数在[ 85,100]的数据
调用 .loc[ ] 方法进行筛选
多重条件筛选