经世济国 贸诚易通 明德强能 博学笃行

“逐梦青春 领航未来”就业育人主题活动(二)

主讲人:财务部刘经理

讲座主题:python与数据处理

时间地点:2024年10月22日,b1240

讲座内容:

Python 是数据处理的首选工具,核心优势是库丰富、语法简洁、处理效率高,其中Pandas(结构化数据处理)和NumPy(数值计算)是两大核心库,几乎能覆盖 80% 以上的日常数据处理场景(如 Excel/CSV 文件读写、数据清洗、筛选、统计分析等)。

一、前置准备:环境与核心库安装

首先需要安装 Python(建议 3.8 及以上版本),然后通过 pip 安装核心库:
bash
运行
# 安装核心数据处理库pip install pandas numpy openpyxl matplotlib seaborn
  • pandas:处理表格型数据(Excel/CSV/ 数据库等)的核心库;

  • numpy:高效处理数值数组计算,是 pandas 的底层支撑;

  • openpyxl:支持 Excel 文件的读写;

  • matplotlib/seaborn:数据可视化,辅助分析结果呈现。

二、Python 数据处理核心流程(附完整实操代码)

以 “销售数据处理” 为例,完整覆盖数据读取→探索→清洗→转换→分析→可视化 全流程,代码可直接复制运行。

1. 第一步:数据读取(CSV/Excel)

先准备一份模拟销售数据(可保存为sales_data.csv,或直接用代码生成):
python
运行
import pandas as pdimport numpy as npimport matplotlib.pyplot as plt# 设置中文显示(解决可视化中文乱码问题)plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False# 方法1:读取本地CSV文件(推荐新手先试用)# df = pd.read_csv('sales_data.csv')# 方法2:生成模拟销售数据(无需本地文件,直接运行)data = {    '日期': pd.date_range(start='2025-01-01', periods=100, freq='D'),    '地区': np.random.choice(['北京', '上海', '广州', '深圳'], size=100),    '产品': np.random.choice(['A类', 'B类', 'C类'], size=100),    '销量': np.random.randint(10, 100, size=100),    '单价': np.random.uniform(50, 200, size=100).round(2),    '销售额': None  # 后续计算}df = pd.DataFrame(data)# 计算销售额(销量×单价)df['销售额'] = (df['销量'] * df['单价']).round(2)# 查看数据前5行,快速了解结构print("数据前5行:")print(df.head())# 查看数据基本信息(行数、列数、数据类型、缺失值)print("\n数据基本信息:")print(df.info())# 查看数值列的统计特征(均值、中位数、最大值等)print("\n数值列统计信息:")print(df.describe())

2. 第二步:数据清洗(核心环节,解决 “脏数据” 问题)

实际数据常存在缺失值、重复值、异常值,清洗是分析的前提:
python
运行
# 1. 处理缺失值(常用3种方式)# 方式1:删除全为空的行/列(无实际意义)df = df.dropna(how='all')# 方式2:填充缺失值(如用均值填充数值列,用众数填充分类列)# 示例:若销量有缺失,用销量均值填充df['销量'] = df['销量'].fillna(df['销量'].mean())# 2. 处理重复值df = df.drop_duplicates()  # 删除完全重复的行print(f"\n清洗后数据行数:{len(df)}")# 3. 处理异常值(如销量不可能为负数,或远超出正常范围)# 方法:筛选出合理范围的数据(销量≥0,单价≥0)df = df[(df['销量'] >= 0) & (df['单价'] >= 0)]# 也可通过四分位数筛选异常值(适合新手的简单方法)Q1 = df['销售额'].quantile(0.25)Q3 = df['销售额'].quantile(0.75)IQR = Q3 - Q1df = df[(df['销售额'] >= Q1 - 1.5*IQR) & (df['销售额'] <= Q3 + 1.5*IQR)]print(f"异常值处理后数据行数:{len(df)}")

3. 第三步:数据转换与分析(核心需求:筛选、分组、统计)

这是数据处理的核心目标,比如 “按地区统计销售额”“按产品计算销量总和” 等:
python
运行
# 1. 数据筛选:比如筛选“北京地区A类产品”的数据beijing_a = df[(df['地区'] == '北京') & (df['产品'] == 'A类')]print("\n北京地区A类产品数据:")print(beijing_a.head())# 2. 分组统计(最常用):按地区分组,计算销售额总和、均值region_sales = df.groupby('地区')['销售额'].agg(['sum', 'mean']).round(2)region_sales.columns = ['销售额总和', '销售额均值']print("\n各地区销售额统计:")print(region_sales)# 3. 多维度分组:按地区+产品分组,计算销量总和region_product_sales = df.groupby(['地区', '产品'])['销量'].sum()print("\n各地区各产品销量统计:")print(region_product_sales)# 4. 新增计算列:比如计算“利润”(假设利润率20%)df['利润'] = (df['销售额'] * 0.2).round(2)print("\n新增利润列后的数据:")print(df[['地区', '产品', '销售额', '利润']].head())

4. 第四步:数据可视化(直观呈现分析结果)

用图表替代纯数字,更易理解:
python
运行
# 1. 各地区销售额总和柱状图plt.figure(figsize=(10, 6))region_sales['销售额总和'].plot(kind='bar', color=['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728'])plt.title('各地区销售额总和', fontsize=14)plt.xlabel('地区', fontsize=12)plt.ylabel('销售额(元)', fontsize=12)plt.xticks(rotation=0)  # x轴标签不旋转plt.grid(axis='y', linestyle='--', alpha=0.7)plt.show()# 2. 各产品销量饼图product_sales = df.groupby('产品')['销量'].sum()plt.figure(figsize=(8, 8))plt.pie(product_sales, labels=product_sales.index, autopct='%1.1f%%', startangle=90)plt.title('各产品销量占比', fontsize=14)plt.axis('equal')  # 保证饼图为正圆形plt.show()

5. 第五步:数据导出(保存处理结果)

将处理好的数据保存为 Excel/CSV,方便后续使用:
python
运行
# 导出为CSV文件df.to_csv('processed_sales_data.csv', index=False, encoding='utf-8-sig')# 导出为Excel文件df.to_excel('processed_sales_data.xlsx', index=False, engine='openpyxl')print("\n处理后的数据已保存为CSV和Excel文件!")

三、关键知识点解释(新手必懂)

  1. DataFrame:Pandas 的核心数据结构,可理解为 “Python 版的 Excel 表格”,每行是一条数据,每列是一个字段,支持行列的灵活操作;

  2. 缺失值处理:优先 “填充”(数值列用均值 / 中位数,分类列用众数),而非直接删除,避免丢失有效数据;

  3. groupby 分组:数据处理的 “灵魂操作”,核心逻辑是 “拆分→应用→合并”—— 先按指定字段拆分数据,再对拆分后的数据做统计(求和 / 均值等),最后合并结果;

  4. 可视化原则:柱状图适合对比 “分类数据”(如各地区销售额),饼图适合展示 “占比”(如产品销量占比),折线图适合展示 “趋势”(如每日销售额)。

四、新手常见坑与避坑技巧

  1. 中文乱码:读取 / 导出文件时指定encoding='utf-8-sig'(CSV),可视化时设置中文字体(如代码中的plt.rcParams);

  2. Excel 读取失败:确保安装openpyxl库,且 Excel 文件未被占用;

  3. 数据类型错误:比如 “日期列” 被识别为文本,可通过df['日期'] = pd.to_datetime(df['日期'])转换为日期类型;

  4. 链式操作修改失败:避免df[df['地区']=='北京']['销量'] = 100这类写法,改用df.loc[df['地区']=='北京', '销量'] = 100(Pandas 推荐的修改方式)。

总结

  1. Python 数据处理的核心是Pandas库,其DataFrame结构可高效处理表格型数据,覆盖 “读写→清洗→分析→可视化→导出” 全流程;

  2. 数据清洗是基础,必须先处理缺失值、重复值、异常值,否则分析结果无意义;

  3. 分组统计(groupby)是高频操作,结合可视化能快速挖掘数据价值,新手可从 “模拟数据 + 实操代码” 入手,逐步适配真实业务数据。

如果需要针对具体场景(如 “处理百万行级大数据”“从数据库读取数据”“复杂的多表关联”)细化代码,可补充需求,我会给出更精准的解决方案。

上一篇:职引未来 筑梦青春2024年西安市离校未就业毕业生专场招聘会(十一)

下一篇:陕西绿能方舟环保科技有限公司会计招聘