很多人都知道,Excel做数据处理和分析特别方面、好用。但是我想说,用Python来处理、分析数据会更加好用,如果你会写Python脚本的话。其实,Excel中的很多操作,在Python中也是可以实现的。毕竟工具只是个工具,但是底层实现的原理是异曲同工的。比如:
1. Excel是直接双击打开工作簿,或者从各种系统把数据导出保存到Excel。用Python获取Excel的内容,只需3行脚本:
# 导入pandas库
import pandas as pd
# 让每一行的数据都展示出来
pd.options.display.max_rows = 9999
# 让每一列的数据都展示出来
pd.options.display.max_columns = 9999
# 加载数据
df = pd.read_excel(r"C:UsersQDMDesktop500.xlsx")
# 打印输出
df
运行结果:
2. Excel中用rand等函数来构造随机矩阵,Python中用numpy工具包:
import numpy as np
# 构造有个5行3列的随机矩阵
data = pd.DataFrame(np.random.rand(5,3))
# 给构建的 DataFrame 定义各个字段的名称
data = pd.DataFrame(np.random.rand(5,3),columns = ["昨天","今天","明天"])
data
运行结果:
3. 保存输出结果到Excel中:
PS:Excel中是按 Ctrl+S(保存)或 F12 (另存为)
# 把数据输出保存到Excel中
data.to_excel(r"C:UsersQDMDesktop随机.xlsx")
# sheet_name 自定义所输出的工作表名称
data.to_excel(r"C:UsersQDMDesktop随机.xlsx",sheet_name = "随机矩阵")
# index = False 去掉Python中自然生成的索引
data.to_excel(r"C:UsersQDMDesktop随机.xlsx",sheet_name = "随机矩阵",index = False)
运行结果:
4. 筛选:
① 筛选出排名前10的记录
# 筛选出排名前10的记录
df[df["排名"] < 11]
运行结果:
② 筛选出属于中国的企业
# 筛选出属于中国的企业
df[df["国家"] == "中国"]
运行结果:
③ 筛选出排名分别是第2和第6的企业
# 筛选出排名分别是第2和第6的企业,注意要有小括号
df[(df["排名"] == 2) | (df["排名"] == 6)]
运行结果:
5. 插入一列新列,并判断是否已经完成销售任务:
另外加载一份数据:
# 加载数据
import pandas as pd
df1 = pd.read_excel(r"C:UsersQDMDesktopcar.xlsx")
df1
运行结果:
进行插入操作:
# 设定区间段
bins = [0, 299, 599, max(df1["销量"])]
# 给不同区间段添加一个映射
group_names = ["不达标", "达标", "优秀"]
# 在后面新增一个辅助列判断销量是否已经完成任务
df1["是否达标"] = pd.cut(df1["销量"], bins, labels = group_names)
# 预览结果
df1
运行结果:
6. del df["列名"] 删除列
数据源 df2
# 加载数据
import pandas as pd
df2 = pd.read_excel(r"C:UsersQDMDesktopcar.xlsx")
df2
删除操作
# 删除列
del df2["销量"]
df2
7. 用 .sort_values() 进行数值排序
# 要排序前的数据源
import pandas as pd
df3 = pd.read_excel(r"C:UsersQDMDesktopcar.xlsx")
df3
排序操作:
# 用 .sort_values() 排序,ascending = True 表升序,ascending=False 排降序
df3.sort_values(by = "销量", ascending = True)
# inplace=True 表示改动并替换原数据表
df3.sort_values(by = "销量", ascending = True, inplace=True)
运行结果:
8. 处理缺失值
数据源:
# 要排序前的数据源
import pandas as pd
df4 = pd.read_excel(r"C:UsersQDMDesktopcar.xlsx",sheet_name = "car")
df4
① 全局概览是否存在缺失值
# 全局概览是否存在缺失值
df4.info()
② 查看缺失值具体在什么位置
# 查看缺失值具体在什么位置
df4.isnull()
③ 计算每列中缺失值的个数
# 计算每列中缺失值的个数
df4.isnull().sum()
④ 用临近的值来填充缺失值
# 用 .fillna(axis = 0, method = "ffill") 来横向/纵向用缺失值前面的值替换缺失值
# method 的参数有 ffill 和 bfill 等
df4 = df4.fillna(axis = 0, method = "ffill")
df4
⑤ 用空值来填充缺失值
# 用空值来替换
df4.fillna("")
⑥ 用 0 来填充
# 用 0 来填充
df4.fillna(0)
⑦ 用 均值 来填充
# 用均值来填充
df4.fillna(df4.mean())
⑧ 删除缺失值
# 删除缺失值
df4.dropna()