数据分析从一堆看似杂乱的数据中通过数据清洗、分析、可视化等手段找出有价值的信息和结论从而帮我们解决实际的问题。PandasPandas是一个功能强大的结构化数据分析的工具集底层是基于Numpy构建的无论是在数据分析领域、还是大数据开发场景中都有显著的优势。https://pandas.pydata.org核心DataFrame类似表格、Series类似表格中的一列安装pip install pandasimport pandas as pd df pd.DataFrame([ {name: 张三, age: 18}, {name: 王五, age: 19}, {name: 小明, age: 20}, {name: 小王, age: 21} ]) df2 pd.DataFrame({ name: [张三, 王五, 小明, 小王], age: [18, 19, 20, 21], }) df3 pd.DataFrame([ [张三, 18], [王五, 19], [小明, 20], [小王, 21] ], columns[name, age]) # 不指定索引默认从0开始 df4 pd.DataFrame([ [张三, 18], [王五, 19], [小明, 20], [小王, 21] ], columns[name, age], index[a, b, c, d])DataFrame常见属性index获取索引columns列名values值size元素个数dtypes每一列的类型shape数据维度行列Seriesdf4 pd.DataFrame([ [张三, 18], [王五, 19], [小明, 20], [小王, 21] ], columns[name, age], index[a, b, c, d]) s1 pd.Series([10, 20, 30, 40, 50]) s2 pd.Series((10, 20, 30, 40, 50), index[a, b, c, d, e]) s3 pd.Series({a: 10, b: 20, c: 30, d: 40, e: 50}) s4 df4[age] # df4.ageindex获取索引values值size元素个数dtypes数据类型shape数据维度行数据读取和写入基于Pandas中提供的API可以很方便地对各类数据文件进行读取和写入# 读取csv数据 df pd.read_csv(./csv_data/movie_list.csv, usecols[电影名, 年份]) print(df) # 数据处理 # df[金额] df[销售数量] * df[单价] # 写入数据 indexFalse: 不写入索引列 df.to_csv(./csv_data/movie_list_new.csv, indexFalse)数据查看df.head(n)查看前n行数据df.tail(n)查看结尾n行数据df.describe()数值列的统计描述df.info()查看数据信息列名、非空计数、数据类型df.shape属性查看数据维度行数列数df.columns属性查看列名数据选择df[列名] / df.列名操作单列df[[列1, 列2]]操作多列df.iloc[start: stop: step]基于行号完成切片不含stopdf.loc[start: stop: step]基于索引标签完成切片含stop数据过滤单条件df[df[销售数量 10]]单条件df[df[产品类别 ].isin([服装, 食品])]单条件df[df[单价 ].between(50, 200)]多条件并且、|或数据清洗指发现并纠正数据中可识别的错误的过程包括处理缺失值、重复值、异常值统一数据格式保证数据的一致性。# 缺失值处理 print(df.isnull()) # 删除缺失值所在行不改变原dataframe将删除缺失值后的dataframe返回 df1 df.dropna() # 删除缺失值所在列不改变原dataframe将删除缺失值后的dataframe返回 df2 df.dropna(axis1) # 填充缺失值 df.fillna(--) df.ffill() # 填充上一行数据 df.bfill() # 填充下一行数据 # 重复值处理 print(df.duplicated()) # 所有列的数据都重复 print(df.duplicated(subset[年份])) # 指定列的数据重复 # 删除重复值 keepfirst 保留重复的第一行 # keeplast保留重复数据的最后一行keep False 全不保留 df.drop_duplicates(subset[年份], keepfirst) # 异常值处理 # 查看异常值 print(df[df[年份 0]]) # 删除异常值 df.drop(df[df[年份 0]].index) # 修复异常值 df[年份] df[年份].abs() # 数据格式处理 如日期标准格式为2026-09-18有异常数据格式为2026/09/18 df[日期] df[日期].str.replace(/, -)数据排序与分组数据排序有两种排序方式升序和降序基于Pandas进行数据排序时可以按照多个列进行排序。ascending默认为True降序df.sort_values(年份, ascendingFalse)升序df.sort_values(年份, ascendingTrue)多列排序进行多个列排序时会先按照第一列进行排序第一列的值相同时才会按照第二列进行排序。df.sort_values([年份, 价格], ascending[False, False])数据分组分组操作就是把数据按照某个特征分成不同的组然后对每个组分别进行统计计算。df.groupby(年份) # 各个组数量 df.groupby(年份)[价格].cout() # 分组求和 df.groupby(年份)[价格].sum() # 每组最大值 df.groupby(年份)[价格].max() # 每组最小值 df.groupby(年份)[价格].min() # 平均值 df.groupby(年份)[价格].mean() # 多个统计操作 df.groupby(年份)[价格].agg([mean, max, min]) df.groupby(年份).agg({数量: [min, mean], 价格: max})MatplotlibMatplotlib是可视化开源Python库也是Python中使用最多的图像绘图库可以创建静态、动态、交互式的图表。安装pip install matplotlibimport matplotlib.pyplot as plt import random # 绘制折线图 x和y轴数据量一定要一致 x [1, 2, 3, 4, 5, 6, 7] y [random.randint(10, 15) for i in x] plt.plot(x, y) plt.show()Figure画布Title标题XlabelX轴标签YlabelY轴标签XtickX轴刻度Xtick_labelX轴刻度标签YtickY轴刻度Ytick_labelY轴刻度标签Grid网格线Legend图例子图为了能同时展示多个图表便于图表之间数据的直观对比和分析通常会在一个画布上创建多个子图。import matplotlib.pyplot as plt # 展示中文黑体 plt.rcParams[font.sans-serif] [SimHei] # nrows:行ncols:列figsize:宽,高dpi:像素 # figure:画布对象axes:子图数组 figure, axes plt.subplots(nrows1, ncols2, figsize(20, 6), dpi100) date [09/11, 09/12, 09/13, 09/14, 09/15, 09/16, 09/17, 09/18, 09/19] values [19, 26, 27, 20, 19, 18, 23, 26, 28] # 柱状图 axes1 axes[0] axes1.bar(date, values, width0.6, colorg) axes1.set_title(气温) axes1.set_xlabel(日期) axes1.set_ylabel(温度) # 饼状图 countries [中国, 印度, 美国, 印尼, 巴基斯坦, 尼日利亚, 巴西, 俄罗斯, 其他] values [14.01, 14.51, 3.4, 2.83, 2.51, 2.33, 2.12, 1.44, 20] axes2 axes[1] axes2.pie(values, labelscountries, autopct%1.1f%%) axes2.set_title(世界人口比例) axes2.legend(loclower center, ncol5, bbox_to_anchor(0.5, -0.1)) plt.show()日志记录为了能够灵活地控制项目中日志的输出可以通过官方提供的logging模块来输出日志。from fastapi import FastAPI import logging logging.basicConfig( levellogging.INFO, format%(asctime)s - %(levelname)s - [%(filename)s:%(lineno)d] - %(message)s ) app FastAPI() app.get(/) def root(): logging.info(访问网页~) return FileResponse(static/index.html)日志级别就是给日志信息贴上的“重要性标签”常见的级别有DEBUG、INFO、WARNING、ERROR、FATAL日志级别依次升高
企业数字化 ERP 产品动态
相关推荐
设置Claude Code for VS Code的输出显示中文 Claude Code for VS Code是VS Code的Claude Code扩展。它是一个旨在增强Visual Studio Code(VS Code)集成开发环境(IDE)中编码体验的工具,以与VS Code的无缝集成而脱颖而出,提供了许多可以简化开发过程的功能: 要想让Claude Code for VS Code的输出显示中… · 2026/9/24 17:29:50
存量时代下的资产盘活:特殊资产处置的路径与探索 行业观察中国房地产市场正经历从"增量开发"到"存量运营"的深刻转型。当数以万亿计的特殊资产、破产重整物业与闲置商业面临去化难题,如何高效盘活这些"沉睡"的资产,已成为行业各方共同面对的核心命题。在杭州,… · 2026/9/24 17:29:44
基于改进YOLOv7的电动车头盔佩戴检测系统实战指南 简介:一套基于改进YOLOv7的电动车头盔佩戴检测系统源码,面向计算机、人工智能等专业的学生及开发者,可满足毕业设计、课程设计或项目实战需求。项目针对电动车骑行安全场景,在标准YOLOv7基础上引入Reversible-Column-Networks改进… · 2026/9/24 18:07:43
矿用锚杆钻车供应商、矿用锚杆钻车优质生产商、矿用锚杆钻车厂家实力参考 不少从事煤矿开采作业的朋友,在找矿用锚杆全新钻车、矿用锚杆二手钻车的时候,都会优先选择可靠的矿用锚杆钻车品牌商来对接,毕竟锚杆支护是井下巷道施工安全的核心保障环节,选对了设备和供应商,直接关系到开采作业的效… · 2026/9/24 18:07:43
Python实现Disco Diffusion本地图像生成:原理、配置与实战 简介:基于Python的Disco Diffusion图像生成工具,将CLIP语义理解与扩散模型结合,可根据文本提示直接生成高质量图像,面向AI绘画爱好者、设计师及深度学习初学者;项目对原始代码做了简化和修改,降低了上手门槛… · 2026/9/24 18:07:43
Java+JSP+MySQL实战:从零搭建教材管理系统全流程开发指南 简介:这是一套基于Java、JSP与MySQL的Web学校教材管理系统项目,面向Java Web学习者、毕业设计及课程设计人员,主要用于解决教材信息入库、修改、删除、检索以及库存管理等日常问题,也适合作为理解典型Web工程的入门参考。压缩包内… · 2026/9/24 18:07:43
基于深度学习的灰度图像上色:从U-Net到GAN的实战指南 简介:本资源面向图像处理与深度学习方向的开发者,提供一套基于 OpenCV DNN 模块实现灰度图像自动上色的完整 C 工程,适用于 Windows 10/11 平台与 VS2019 开发环境。工程加载 colorization 预训练模型,通过调整参数可得到不同色彩… · 2026/9/24 18:07:37
混凝土结构钻孔补漏服务 海固达建筑劳务支持现场勘查报价 混凝土结构钻孔补漏的行业基础认知混凝土是当下建筑工程领域应用最为广泛的结构材料,具备抗压强度高、耐久性好的核心优势,成为工业厂房、民用住宅、市政工程等各类建筑的核心承载结构。但长期使用过程中,受环境温湿度变化、结构应力沉降、材… · 2026/9/24 18:07:37
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44