您的位置 首页 知识

python对excel数据处理Python分析和处理excel文件数据的详细

目录
  • 一、准备职业
    • 1. 安装必要的库
    • 2. 准备 Excel 文件
  • 二、读取 Excel 文件
    • 1. 使用 pandas 读取
    • 2. 使用 openpyxl 读取
  • 三、数据基本操作
    • 1. 查看数据信息
    • 2. 数据筛选
    • 3. 数据分组和聚合
    • 4. 数据排序
  • 四、数据可视化
    • 1. 使用 matplotlib 绘制图表
    • 2. 使用 seaborn 进行高质量可视化
  • 五、数据处理与清洗
    • 1. 处理缺失值
    • 2. 数据类型转换
    • 3. 数据标准化
  • 六、高质量分析技术
    • 1. 时刻序列分析
    • 2. 相关性分析
    • 3. 分组聚合与透 视表
  • 七、完整示例
    • 八、性能优化技巧
      • 九、常见难题解决
        • 十、扩展分析路线

          一、准备职业

          1. 安装必要的库

          开头来说需要安装 Python 的数据处理和 Excel 处理库:

          pip install pandas openpyxl xlrd

          注意:

          • pandas是核心数据处理库
          • openpyxl用于处理.xlsx格式的 Excel 文件
          • xlrd用于处理较旧的.xls格式(从 xlrd 2.0.0 开始不再支持 .xlsx)

          2. 准备 Excel 文件

          假设我们有一个名为sales_data.xlsx的 Excel 文件,包含下面内容数据:

          日期 产品 销量 单价 销售额
          2023-01-01 产品A 10 100 1000
          2023-01-01 产品B 5 200 1000
          2023-01-02 产品A 8 100 800
          2023-01-02 产品C 12 150 1800
          &8230; &8230; &8230; &8230; &8230;

          二、读取 Excel 文件

          1. 使用 pandas 读取

          import pandas as pd 读取整个职业表df = pd.read_excel(‘sales_data.xlsx’) 显示前5行数据print(df.head()) 读取特定职业表(如果有多个职业表) df = pd.read_excel(‘sales_data.xlsx’, sheet_name=’Sheet1′) 读取特定列 df = pd.read_excel(‘sales_data.xlsx’, usecols=[‘日期’, ‘产品’, ‘销量’])

          2. 使用 openpyxl 读取

          from openpyxl import load_workbook 加载职业簿wb = load_workbook(‘sales_data.xlsx’) 获取活动职业表或指定职业表sheet = wb.active 或 wb[‘Sheet1’] 读取数据data = []for row in sheet.iter_rows(values_only=True): data.append(row) 转换为DataFrame(可选)import pandas as pddf = pd.DataFrame(data[1:], columns=data[0]) 假设第一行是深入了解

          三、数据基本操作

          1. 查看数据信息

          查看数据基本信息print(df.info()) 查看统计简介print(df.describe()) 查看列名print(df.columns.tolist())

          2. 数据筛选

          筛选特定日期的数据jan_data = df[df[‘日期’] == ‘2023-01-01’] 筛选销量大于5的产品high_sales = df[df[‘销量’] > 5] 筛选多个条件filtered_data = df[(df[‘日期’] >= ‘2023-01-01’) & (df[‘产品’] == ‘产品A’)]

          3. 数据分组和聚合

          按产品分组计算总销量和总销售额product_stats = df.groupby(‘产品’).agg( ‘销量’: ‘sum’, ‘销售额’: ‘sum’}).reset_index() print(product_stats) 计算每日销售额总和daily_sales = df.groupby(‘日期’)[‘销售额’].sum().reset_index()

          4. 数据排序

          按销售额降序排序sorted_data = df.sort_values(‘销售额’, ascending=False) 按日期和销量排序sorted_data = df.sort_values([‘日期’, ‘销量’], ascending=[True, False])

          四、数据可视化

          1. 使用 matplotlib 绘制图表

          import matplotlib.pyplot as plt 设置中文字体(避免中文显示难题)plt.rcParams[‘font.sans-serif’] = [‘SimHei’]plt.rcParams[‘axes.unicode_minus’] = False 绘制柱状图 – 各产品总销量product_stats.plot(kind=’bar’, x=’产品’, y=’销量’, title=’各产品总销量’)plt.ylabel(‘销量’)plt.show() 绘制折线图 – 每日销售额动向daily_sales.plot(kind=’line’, x=’日期’, y=’销售额’, title=’每日销售额动向’)plt.xlabel(‘日期’)plt.ylabel(‘销售额’)plt.xticks(rotation=45)plt.tight_layout()plt.show()

          2. 使用 seaborn 进行高质量可视化

          pip install seaborn

          import seaborn as sns 设置风格sns.set(style=”whitegrid”) 绘制箱线图 – 各产品销量分布plt.figure(figsize=(10, 6))sns.boxplot(x=’产品’, y=’销量’, data=df)plt.title(‘各产品销量分布’)plt.show() 绘制热力图 – 相关性分析corr_matrix = df[[‘销量’, ‘单价’, ‘销售额’]].corr()sns.heatmap(corr_matrix, annot=True, cmap=’coolwarm’)plt.title(‘变量相关性热力图’)plt.show()

          五、数据处理与清洗

          1. 处理缺失值

          检查缺失值print(df.isnull().sum()) 填充缺失值df_filled = df.fillna(‘销量’: 0, ‘单价’: df[‘单价’].mean()}) 删除包含缺失值的行df_dropped = df.dropna()

          2. 数据类型转换

          转换日期格式df[‘日期’] = pd.to_datetime(df[‘日期’]) 转换数值类型df[‘销量’] = pd.to_numeric(df[‘销量’], errors=’coerce’)df[‘单价’] = pd.to_numeric(df[‘单价’], errors=’coerce’)df[‘销售额’] = pd.to_numeric(df[‘销售额’], errors=’coerce’)

          3. 数据标准化

          from sklearn.preprocessing import StandardScaler 选择需要标准化的列features = df[[‘销量’, ‘单价’, ‘销售额’]] 标准化处理scaler = StandardScaler()scaled_features = scaler.fit_transform(features) 转换回DataFramescaled_df = pd.DataFrame(scaled_features, columns=features.columns)

          六、高质量分析技术

          1. 时刻序列分析

          确保日期是datetime类型df[‘日期’] = pd.to_datetime(df[‘日期’]) 设置日期为索引df.set_index(‘日期’, inplace=True) 按周汇总销售额weekly_sales = df.resample(‘W’)[‘销售额’].sum() 移动平均df[‘7天移动平均销售额’] = df[‘销售额’].rolling(window=7).mean()

          2. 相关性分析

          计算相关性矩阵corr_matrix = df[[‘销量’, ‘单价’, ‘销售额’]].corr() 可视化相关性import seaborn as snsimport matplotlib.pyplot as plt plt.figure(figsize=(8, 6))sns.heatmap(corr_matrix, annot=True, cmap=’coolwarm’, center=0)plt.title(‘变量相关性热力图’)plt.show()

          3. 分组聚合与透 视表

          使用groupby分组聚合grouped = df.groupby([‘产品’, ‘日期’]).agg( ‘销量’: ‘sum’, ‘销售额’: ‘sum’}).reset_index() 创建透 视表pivot_table = df.pivot_table( values=’销售额’, index=’日期’, columns=’产品’, aggfunc=’sum’, fill_value=0) print(pivot_table)

          七、完整示例

          下面一个完整的分析流程示例:

          import pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsfrom datetime import datetime 1. 读取数据df = pd.read_excel(‘sales_data.xlsx’) 2. 数据清洗df[‘日期’] = pd.to_datetime(df[‘日期’])df[‘销量’] = pd.to_numeric(df[‘销量’], errors=’coerce’).fillna(0)df[‘单价’] = pd.to_numeric(df[‘单价’], errors=’coerce’).fillna(df[‘单价’].mean())df[‘销售额’] = pd.to_numeric(df[‘销售额’], errors=’coerce’).fillna(0) 3. 基本统计print(“基本统计信息:”)print(df.describe()) 4. 按产品分组统计product_stats = df.groupby(‘产品’).agg( ‘销量’: ‘sum’, ‘销售额’: ‘sum’, ‘单价’: ‘mean’}).sort_values(‘销售额’, ascending=False) print(“n各产品销售统计:”)print(product_stats) 5. 时刻序列分析df.set_index(‘日期’, inplace=True)daily_sales = df.resample(‘D’)[‘销售额’].sum() 6. 可视化plt.figure(figsize=(15, 10)) 每日销售额动向plt.subplot(2, 2, 1)daily_sales.plot(title=’每日销售额动向’)plt.ylabel(‘销售额’) 各产品销量对比plt.subplot(2, 2, 2)product_stats[‘销量’].plot(kind=’bar’, title=’各产品总销量’)plt.ylabel(‘销量’) 销量与单价关系plt.subplot(2, 2, 3)sns.scatterplot(data=df, x=’单价’, y=’销量’, hue=’产品’)plt.title(‘销量与单价关系’)plt.xlabel(‘单价’)plt.ylabel(‘销量’) 产品销售额占比plt.subplot(2, 2, 4)product_stats[‘销售额’].plot(kind=’pie’, autopct=’%1.1f%%’, startangle=90)plt.title(‘产品销售额占比’)plt.ylabel(”) 去掉默认的ylabel plt.tight_layout()plt.show()

          八、性能优化技巧

          对于大型 Excel 文件,可以考虑下面内容优化技巧:

          • ??只读取需要的列??:

          df = pd.read_excel(‘large_file.xlsx’, usecols=[‘日期’, ‘产品’, ‘销量’])

          分块读取??:

          chunk_size = 10000chunks = pd.read_excel(‘very_large_file.xlsx’, chunksize=chunk_size) for chunk in chunks: process(chunk) 处理每个数据块

          • ??使用更高效的文件格式??:

            • 将 Excel 转换为 CSV 后处理(通常更快)
            • 使用 Parquet 或 Feather 格式存储中间数据
          • ??并行处理??:

          import dask.dataframe as dd 使用Dask处理大型数据集ddf = dd.read_excel(‘large_file.xlsx’)result = ddf.groupby(‘产品’).销量.sum().compute()

          九、常见难题解决

          • ??中文显示难题??:

          plt.rcParams[‘font.sans-serif’] = [‘SimHei’] 设置中文字体plt.rcParams[‘axes.unicode_minus’] = False 解决负号显示难题

          ??日期格式不一致??:

          尝试多种日期格式解析df[‘日期’] = pd.to_datetime(df[‘日期’], errors=’coerce’, format=’%Y-%m-%d’)df[‘日期’] = pd.to_datetime(df[‘日期’], errors=’coerce’, format=’%d/%m/%Y’)df[‘日期’].fillna(pd.to_datetime(‘1900-01-01’), inplace=True) 处理无法解析的日期

          1. ??内存不足错误??:

            • 使用dtype参数指定列的数据类型减少内存使用
            • 分块处理大型文件
            • 使用更高效的文件格式

          十、扩展分析路线

          1. ??预测分析??:

            • 使用时刻序列模型预测未来销售额
            • 应用机器进修模型预测产品需求
          2. ??客户细分??:

            • 基于购买行为进行客户分群
            • 构建RFM模型(最近购买、频率、金额)
          3. ??异常检测??:

            • 识别异常销售记录
            • 检测数据中的异常模式
          4. ??地理空间分析??:

            • 如果数据包含地理位置信息,可以进行地理可视化
            • 分析不同地区的销售表现

          以上就是Python分析和处理excel文件数据的详细步骤的详细内容,更多关于Python分析和处理excel数据的资料请关注风君子博客其它相关文章!

          无论兄弟们可能感兴趣的文章:

          • 使用Python自动处理Excel数据缺失值的完整指南
          • Python数据处理之导入导出Excel数据方式
          • 使用Python处理Excel文件并将数据存储到PostgreSQL的技巧
          • Python与xlwings黄金组合处理Excel各种数据和自动化任务
          • Python实现处理Excel数据并生成只读模式