当前位置:首页 » 《我的小黑屋》 » 正文

Python常用的20个excel数据处理的脚本(附详细源码)!建议收藏,总有你能用上的!

14 人参与  2024年11月24日 12:02  分类 : 《我的小黑屋》  评论

点击全文阅读


目录

前言

1. 读取 Excel 文件

2. 数据筛选

3. 数据汇总

4. 数据分组

5. 数据排序

6. 数据对比

7. 数据合并

8. Sheet 合并

9. 多个 Excel 文件合并

10. 缺失值填充

11. 数据清洗

12. 数据透视表

13. 数据重塑

14. 数据聚合

15. 数据统计

16. 数据类型转换

17. 数据切片

18. 数据重命名

19. 数据去重

20. 写入 Excel 文件

结语


前言

在Python中,处理Excel数据是一个常见的需求,通常可以通过多个库来实现,如pandas、openpyxl、xlsxwriter等。

今天给大家带来20个常用的Excel数据处理脚本示例,涵盖了从基础的文件读写到复杂的数据分析和格式设置等操作(文末附python学习资料)。

示例数据

假设我们有一个名为 data.xlsx 的 Excel 文件,其中包含以下数据:

| Column1 | Column2 | Column3 |

|---------|---------|---------|

| A       | 10      | 20      |

| B       | 20      | 30      |

| C       | 30      | 40      |

| D       | 40      | 50      |

| E       | 50      | 60      |

| F       | 60      | 70      |

| G       | 70      | 80      |

| H       | 80      | 90      |

| I       | 90      | 100     |‍

1. 读取 Excel 文件

import pandas as pddef read_excel(file_path):    df = pd.read_excel(file_path, engine='openpyxl')    return dfif __name__ == "__main__":    file_path = "data.xlsx"    df = read_excel(file_path)    print(df)

2. 数据筛选

筛选出 Column1 为 'D' 的行。

import pandas as pddef filter_data(file_path, column, value):    df = pd.read_excel(file_path, engine='openpyxl')    filtered_df = df[df[column] == value]    return filtered_dfif __name__ == "__main__":    file_path = "data.xlsx"    column = "Column1"    value = "D"    filtered_df = filter_data(file_path, column, value)    print(filtered_df)

3. 数据汇总

计算 Column2 的总和。

import pandas as pddef summarize_data(file_path, column):    df = pd.read_excel(file_path, engine='openpyxl')    total = df[column].sum()    return totalif __name__ == "__main__":    file_path = "data.xlsx"    column = "Column2"    total = summarize_data(file_path, column)    print(total)

4. 数据分组

按 Column1 分组并计算 Column2 的平均值。

import pandas as pddef group_data(file_path, by, agg):    df = pd.read_excel(file_path, engine='openpyxl')    grouped = df.groupby(by)[agg].mean()    return groupedif __name__ == "__main__":    file_path = "data.xlsx"    by = "Column1"    agg = "Column2"    grouped = group_data(file_path, by, agg)    print(grouped)

5. 数据排序

按 Column2 升序排序。

import pandas as pddef sort_data(file_path, column, ascending=True):    df = pd.read_excel(file_path, engine='openpyxl')    sorted_df = df.sort_values(by=column, ascending=ascending)    return sorted_dfif __name__ == "__main__":    file_path = "data.xlsx"    column = "Column2"    sorted_df = sort_data(file_path, column)    print(sorted_df)

6. 数据对比

比较两个 Excel 文件 data1.xlsx 和 data2.xlsx 中 Column1 的不同之处。​​​​​

import pandas as pddef compare_data(file_path1, file_path2, on):    df1 = pd.read_excel(file_path1, engine='openpyxl')    df2 = pd.read_excel(file_path2, engine='openpyxl')    merged = pd.merge(df1, df2, on=on, how='outer', indicator=True)    diff = merged[merged['_merge'] != 'both']    return diffif __name__ == "__main__":    file_path1 = "data1.xlsx"    file_path2 = "data2.xlsx"    on = "Column1"    diff = compare_data(file_path1, file_path2, on)    print(diff)

7. 数据合并

将两个 Excel 文件 data1.xlsx 和 data2.xlsx 中具有相同 Column1 的行合并。​​​​​​​

import pandas as pddef merge_data(file_path1, file_path2, on):    df1 = pd.read_excel(file_path1, engine='openpyxl')    df2 = pd.read_excel(file_path2, engine='openpyxl')    merged = pd.merge(df1, df2, on=on, how='outer')    return mergedif __name__ == "__main__":    file_path1 = "data1.xlsx"    file_path2 = "data2.xlsx"    on = "Column1"    merged = merge_data(file_path1, file_path2, on)    print(merged)

8. Sheet 合并

合并同一个 Excel 文件 data.xlsx 中的所有 Sheet。​​​​​​​

import pandas as pddef merge_sheets(file_path):    sheets = pd.read_excel(file_path, sheet_name=None, engine='openpyxl')    combined = pd.concat(sheets.values(), ignore_index=True)    return combinedif __name__ == "__main__":    file_path = "data.xlsx"    combined = merge_sheets(file_path)    print(combined)

9. 多个 Excel 文件合并

合并所有名为 *.xlsx 的 Excel 文件。​​​​​​​

import pandas as pdimport globdef merge_multiple_files(file_pattern):    files = glob.glob(file_pattern)    dfs = [pd.read_excel(file, engine='openpyxl') for file in files]    combined = pd.concat(dfs, ignore_index=True)    return combinedif __name__ == "__main__":    file_pattern = "*.xlsx"    combined = merge_multiple_files(file_pattern)    print(combined)

作为一个IT的过来人,我自己整理了一些python学习资料,希望对你们有帮助。

朋友们如果需要可以点击下方链接或微信扫描下方二维码都可以免费获取【保证100%免费】。

CSDN大礼包:《2024年最新Python全套学习资料包】免费领取(安全链接,放心点击)

10. 缺失值填充

将 Column2 中的缺失值填充为 0。​​​​​​​

import pandas as pddef fill_missing_values(file_path, column, value):    df = pd.read_excel(file_path, engine='openpyxl')    df[column].fillna(value, inplace=True)    return dfif __name__ == "__main__":    file_path = "data.xlsx"    column = "Column2"    value = 0    df = fill_missing_values(file_path, column, value)    print(df)

11. 数据清洗

移除 Column1 中的空格。​​​​​​​

import pandas as pddef clean_data(file_path, column, regex):    df = pd.read_excel(file_path, engine='openpyxl')    df[column] = df[column].str.replace(regex, '')    return dfif __name__ == "__main__":    file_path = "data.xlsx"    column = "Column1"    regex = r'\s+'    df = clean_data(file_path, column, regex)    print(df)

12. 数据透视表

创建一个透视表,按 Column1 分类,显示 Column2 的总和。​​​​​​​

import pandas as pddef pivot_table(file_path, index, columns, values):    df = pd.read_excel(file_path, engine='openpyxl')    pivoted = pd.pivot_table(df, index=index, columns=columns, values=values, aggfunc='sum')    return pivotedif __name__ == "__main__":    file_path = "data.xlsx"    index = "Column1"    columns = "Column2"    values = "Column3"    pivoted = pivot_table(file_path, index, columns, values)    print(pivoted)

13. 数据重塑

将 Column2 和 Column3 重塑成多行。​​​​​​​

import pandas as pddef melt_data(file_path, id_vars, value_vars):    df = pd.read_excel(file_path, engine='openpyxl')    melted = pd.melt(df, id_vars=id_vars, value_vars=value_vars)    return meltedif __name__ == "__main__":    file_path = "data.xlsx"    id_vars = "Column1"    value_vars = ["Column2", "Column3"]    melted = melt_data(file_path, id_vars, value_vars)    print(melted)

14. 数据聚合

按 Column1 分组,计算 Column2 的总和和 Column3 的平均值。​​​​​

import pandas as pddef aggregate_data(file_path, group_by, agg):    df = pd.read_excel(file_path, engine='openpyxl')    aggregated = df.groupby(group_by).agg(agg)    return aggregatedif __name__ == "__main__":    file_path = "data.xlsx"    group_by = "Column1"    agg = {"Column2": "sum", "Column3": "mean"}    aggregated = aggregate_data(file_path, group_by, agg)    print(aggregated)

15. 数据统计

计算 Column2 的统计数据。​​​​​​​

import pandas as pddef describe_data(file_path, columns):    df = pd.read_excel(file_path, engine='openpyxl')    stats = df[columns].describe()    return statsif __name__ == "__main__":    file_path = "data.xlsx"    columns = ["Column2", "Column3"]    stats = describe_data(file_path, columns)    print(stats)

16. 数据类型转换

将 Column2 的数据类型转换为整数。​​​​​​

import pandas as pddef convert_types(file_path, column, dtype):    df = pd.read_excel(file_path, engine='openpyxl')    df[column] = df[column].astype(dtype)    return dfif __name__ == "__main__":    file_path = "data.xlsx"    column = "Column2"    dtype = int    df = convert_types(file_path, column, dtype)    print(df)

17. 数据切片

选择前5行。​​​​​​​

import pandas as pddef slice_data(file_path, start, stop):    df = pd.read_excel(file_path, engine='openpyxl')    sliced_df = df[start:stop]    return sliced_dfif __name__ == "__main__":    file_path = "data.xlsx"    start = 0    stop = 5    sliced_df = slice_data(file_path, start, stop)    print(sliced_df)

18. 数据重命名

将 Column1 重命名为 NewColumn1。​​​​​​​

import pandas as pddef rename_columns(file_path, old_name, new_name):    df = pd.read_excel(file_path, engine='openpyxl')    df.rename(columns={old_name: new_name}, inplace=True)    return dfif __name__ == "__main__":    file_path = "data.xlsx"    old_name = "Column1"    new_name = "NewColumn1"    df = rename_columns(file_path, old_name, new_name)    print(df)

19. 数据去重

去除 Column1 中的重复项。​​​​​​​

import pandas as pddef remove_duplicates(file_path, subset=None):    df = pd.read_excel(file_path, engine='openpyxl')    unique_df = df.drop_duplicates(subset=subset)    return unique_dfif __name__ == "__main__":    file_path = "data.xlsx"    subset = ["Column1"]    unique_df = remove_duplicates(file_path, subset)    print(unique_df)

20. 写入 Excel 文件

将处理后的数据写回 Excel 文件。​​​​​​​

import pandas as pddef write_excel(df, file_path):    df.to_excel(file_path, index=False, engine='openpyxl')if __name__ == "__main__":    df = pd.DataFrame({'Column1': ['A', 'B', 'C'], 'Column2': [10, 20, 30]})    file_path = "output.xlsx"    write_excel(df, file_path)

结语

学会了Python就业还是不用愁的,这些行业在薪资待遇上可能会有一些区别,但是整体来看还是很好的,我也不会说往哪个方向发展是最好的,各取所长选择自己最感兴趣的去学习就好。

作为一个IT的过来人,我自己整理了一些python学习资料,希望对你们有帮助。

朋友们如果需要可以点击下方链接或微信扫描下方二维码都可以免费获取【保证100%免费】。

CSDN大礼包:《2024年最新Python全套学习资料包】免费领取(安全链接,放心点击)

编程资料、学习路线图、源代码、软件安装包等!

① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/191261.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 好看的秦依冉厉泽谦_秦依冉厉泽谦
  • 是图图的拥有牡丹命格的我嫁给五皇子,抛弃我的太子谢怀川,余思思,楼心月全书在线
  • 全文老婆成***后,王牌拆弹专家(张凯,张振华,林蕴)列表_全文老婆成***后,王牌拆弹专家
  • 逼我下乡?我闪婚嫁军官带娃暴富苏冉冉刘翠芬周牧深完本_逼我下乡?我闪婚嫁军官带娃暴富(苏冉冉刘翠芬周牧深)
  • 童养夫为了白月光想虐我?没关系我还有九个(崔清乐顾北寒)_童养夫为了白月光想虐我?没关系我还有九个(崔清乐顾北寒)
  • 代管班费小荷包三年后,青梅说我吞了180万(乔宇宁雨)全书免费_(乔宇宁雨)代管班费小荷包三年后,青梅说我吞了180万后续(乔宇宁雨)
  • 男友一家要我守规矩后,却悔疯了苏然完本_男友一家要我守规矩后,却悔疯了(苏然)
  • 重生打脸渣男毒闺蜜(陈亮张倩)全书免费_(陈亮张倩)重生打脸渣男毒闺蜜后续(陈亮张倩)
  • 全文和宗门断情绝义后,小可怜被大佬团宠了创作编写(江寻柳青青)列表_全文和宗门断情绝义后,小可怜被大佬团宠了创作编写
  • 和宗门断情绝义后,小可怜被大佬团宠了创作编写江寻柳青青完本_和宗门断情绝义后,小可怜被大佬团宠了创作编写(江寻柳青青)
  • 向导坐牢后,结果把狱友驯成忠犬桑虞陆擢完本_向导坐牢后,结果把狱友驯成忠犬(桑虞陆擢)
  • 姑姑爱开玩笑,藏我的录取通知书夏知妤_姑姑爱开玩笑,藏我的录取通知书夏知妤

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1