北京住房和城乡建设部官方网站,辽宁省网站备案,市场调研报告ppt模板,设计本科#x1f3af; 为什么学习Pandas#xff1f;
在数据科学的世界里#xff0c;80%的时间都花在数据清洗和预处理上。Pandas作为Python数据分析的核心库#xff0c;就像数据分析师的“瑞士军刀”#xff0c;能帮你高效处理结构化数据#xff0c;让数据从原始状态变成有价值的… 为什么学习Pandas在数据科学的世界里80%的时间都花在数据清洗和预处理上。Pandas作为Python数据分析的核心库就像数据分析师的“瑞士军刀”能帮你高效处理结构化数据让数据从原始状态变成有价值的洞察。想象一下几行代码就能完成Excel中数小时的手工操作这不仅是效率的提升更是思维的解放 快速安装与导入# 安装pandas pip install pandas # 通常与numpy一起使用 pip install pandas numpy python import pandas as pd import numpy as np print(fPandas版本: {pd.__version__})️ 两大核心数据结构1. Series一维数据容器Series就像带标签的数组是构建DataFrame的基础。# 创建Series的多种方式 temperature pd.Series([22.5, 24.0, 21.8, 23.5, 25.2], index[周一, 周二, 周三, 周四, 周五], name温度) print(f温度序列:\n{temperature}) print(f数据类型: {temperature.dtype}) print(f最大值: {temperature.max()}℃)2. DataFrame二维数据表格DataFrame是pandas的灵魂你可以把它想象成Excel表格或SQL表。# 创建员工信息表 employees pd.DataFrame({ 员工ID: [E001, E002, E003, E004], 姓名: [张明, 李华, 王芳, 赵强], 部门: [技术部, 市场部, 技术部, 人事部], 入职年份: [2019, 2020, 2021, 2018], 月薪(元): [15000, 12000, 13000, 11000], 绩效评级: [A, B, A, C] }) print(员工信息表:) print(employees) 数据读写连接现实世界读取数据支持30格式# 读取各种格式的数据 csv_data pd.read_csv(data/sales.csv, encodingutf-8) # CSV文件 excel_data pd.read_excel(data/report.xlsx, sheet_nameSheet1) # Excel json_data pd.read_json(data/config.json) # JSON sql_data pd.read_sql(SELECT * FROM users, connection) # SQL数据库 # 读取网络数据 url_data pd.read_csv(https://raw.githubusercontent.com/dataset/data.csv)保存处理结果# 保存为不同格式 employees.to_csv(output/employees_processed.csv, indexFalse, encodingutf-8) employees.to_excel(output/report.xlsx, sheet_name员工信息) employees.to_json(output/data.json, orientrecords, force_asciiFalse) 数据探索第一眼看数据# 快速了解数据全貌 print( 数据概览 ) print(f数据形状: {employees.shape}) # (行数, 列数) print(f\n前3行数据:) print(employees.head(3)) print(f\n数据信息:) employees.info() print(f\n统计摘要:) print(employees.describe()) print(f\n数值列统计:) print(employees.describe(include[np.number])) print(f\n非数值列统计:) print(employees.describe(include[object])) print(f\n缺失值统计:) print(employees.isnull().sum()) 数据选择精准定位目标选择列数据# 选择单列返回Series names employees[姓名] # 选择多列返回DataFrame personal_info employees[[姓名, 部门, 入职年份]] # 使用点号选择列名不含空格时可用 departments employees.部门选择行数据# 按位置选择iloc first_row employees.iloc[0] # 第一行 first_three employees.iloc[:3] # 前三行 specific_rows employees.iloc[[0, 2, 3]] # 第1,3,4行 # 按标签选择loc row_by_index employees.loc[0] # 索引为0的行 # 条件筛选最常用 tech_dept employees[employees[部门] 技术部] high_salary employees[employees[月薪(元)] 12000] tech_and_high employees[(employees[部门] 技术部) (employees[月薪(元)] 12000)] # 优雅的条件查询 result employees.query(部门 技术部 and 月薪(元) 12000)️ 数据处理从杂乱到整洁处理缺失值# 创建含缺失值的数据示例 data_with_na pd.DataFrame({ A: [1, 2, np.nan, 4], B: [5, np.nan, np.nan, 8], C: [9, 10, 11, 12] }) print(原始数据:) print(data_with_na) print(\n删除缺失值:) print(data_with_na.dropna()) # 删除含NA的行 print(\n填充缺失值:) print(data_with_na.fillna(0)) # 用0填充 print(data_with_na.fillna({A: data_with_na[A].mean(), # 列A用均值填充 B: data_with_na[B].median()})) # 列B用中位数填充数据转换# 添加新列 employees[年薪(元)] employees[月薪(元)] * 12 employees[工龄] 2024 - employees[入职年份] employees[是否技术部] np.where(employees[部门] 技术部, 是, 否) # 修改现有列 employees[姓名] employees[姓名].str.upper() # 转为大写 employees[月薪(万元)] employees[月薪(元)] / 10000 # 单位转换 print(转换后的数据:) print(employees)排序与去重# 单列排序 sorted_by_salary employees.sort_values(月薪(元), ascendingFalse) # 多列排序 sorted_multi employees.sort_values([部门, 月薪(元)], ascending[True, False]) # 去除重复行 unique_depts employees[部门].drop_duplicates() 数据分析挖掘数据价值分组聚合GroupBy的强大功能print( 部门统计分析 ) # 基础分组 dept_stats employees.groupby(部门).agg({ 月薪(元): [mean, max, min, sum, count], 入职年份: mean, 员工ID: count }) dept_stats.columns [平均月薪, 最高月薪, 最低月薪, 月薪总额, 人数, 平均入职年份, 员工总数] print(dept_stats) # 更复杂的分组操作 complex_stats employees.groupby([部门, 绩效评级]).agg({ 月薪(元): [mean, std], 员工ID: count }).round(2) print(\n部门-绩效交叉统计:) print(complex_stats)数据透视表Pivot Table# 创建数据透视表类似Excel数据透视表 pivot_table pd.pivot_table(employees, values月薪(元), index部门, columns绩效评级, aggfunc[mean, count], fill_value0) print(数据透视表:) print(pivot_table)数据合并# 创建额外数据 bonus_data pd.DataFrame({ 员工ID: [E001, E002, E003], 年终奖: [30000, 20000, 25000] }) # 合并数据 merged_data pd.merge(employees, bonus_data, on员工ID, howleft) merged_data[年总收入] merged_data[年薪(元)] merged_data[年终奖].fillna(0) print(\n合并后的完整数据:) print(merged_data) 数据可视化让数据说话import matplotlib.pyplot as plt # 设置中文字体如果需要 plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False # 创建图表 fig, axes plt.subplots(2, 2, figsize(12, 10)) # 1. 部门人数柱状图 dept_counts employees[部门].value_counts() dept_counts.plot(kindbar, axaxes[0, 0], colorskyblue) axes[0, 0].set_title(各部门人数分布) axes[0, 0].set_ylabel(人数) # 2. 薪资分布直方图 employees[月薪(元)].plot(kindhist, bins10, axaxes[0, 1], alpha0.7, colorlightgreen) axes[0, 1].set_title(薪资分布直方图) axes[0, 1].set_xlabel(月薪(元)) # 3. 箱线图查看薪资分布 employees.boxplot(column月薪(元), by部门, axaxes[1, 0]) axes[1, 0].set_title(各部门薪资分布箱线图) axes[1, 0].set_ylabel(月薪(元)) # 4. 散点图工龄vs薪资 axes[1, 1].scatter(employees[入职年份], employees[月薪(元)], cred, alpha0.6) axes[1, 1].set_title(入职年份与薪资关系) axes[1, 1].set_xlabel(入职年份) axes[1, 1].set_ylabel(月薪(元)) plt.tight_layout() plt.savefig(output/analysis_charts.png, dpi300, bbox_inchestight) plt.show() 实战案例销售数据分析# 创建模拟销售数据 np.random.seed(42) # 设置随机种子保证可重复性 dates pd.date_range(2024-01-01, 2024-03-31, freqD) sales_data pd.DataFrame({ 日期: dates, 产品类别: np.random.choice([电子产品, 服装, 食品, 书籍], len(dates)), 销售额: np.random.randint(100, 5000, len(dates)), 销售量: np.random.randint(1, 100, len(dates)), 地区: np.random.choice([华北, 华东, 华南, 西部], len(dates)) }) print( 销售数据分析报告 )# 1. 总体统计print(f分析周期: {sales_data[日期].min().date()} 至 {sales_data[日期].max().date()}) print(f总销售额: ¥{sales_data[销售额].sum():,.2f}) print(f日均销售额: ¥{sales_data[销售额].mean():,.2f})# 2. 按产品类别分析product_analysis sales_data.groupby(产品类别).agg({ 销售额: [sum, mean, count], 销售量: sum }).round(2) product_analysis.columns [总销售额, 平均销售额, 销售天数, 总销售量] product_analysis[销售占比] (product_analysis[总销售额] / product_analysis[总销售额].sum() * 100).round(1) print(\n产品类别分析:) print(product_analysis)# 3. 时间序列分析sales_data[月份] sales_data[日期].dt.to_period(M) monthly_sales sales_data.groupby(月份)[销售额].sum() print(\n月度销售趋势:) for month, sales in monthly_sales.items(): print(f{month.strftime(%Y年%m月)}: ¥{sales:,.2f}) # 4. 地区表现 region_analysis sales_data.groupby(地区).agg({ 销售额: [sum, mean], 销售量: sum }) print(\n地区销售表现:) print(region_analysis) 学习资源推荐官方资源 官方文档 - 最权威的参考资料 10分钟学会pandas - 快速入门指南实践平台 Kaggle Learn - 交互式学习平台 DataCamp - 结构化课程进阶学习《Python for Data Analysis》 - pandas作者亲自撰写 Real Python教程 - 实践导向教程 最佳实践建议先探索后处理使用.info()和.describe()了解数据全貌处理缺失值根据业务逻辑选择填充或删除善用向量化操作避免使用循环用pandas内置函数保持数据一致性确保数据类型正确处理异常值文档化处理步骤记录每个数据处理步骤的目的和结果✨ 总结Pandas不仅是一个工具更是一种数据处理思维方式。通过本文的学习你已经掌握了✅ 数据读取与保存的多种方式✅ 数据探索与清洗的核心技巧✅ 数据筛选与转换的灵活方法✅ 分组聚合与统计分析的能力✅ 数据可视化的基础技能实践是最好的老师。找一个真实的数据集从数据清洗到分析可视化完整走一遍流程你会对pandas有更深刻的理解。