2026/4/18 11:46:16
网站建设
项目流程
怎么样自己做网站赚钱年入40万,网站建设人工智能,wordpress 3.4 漏洞,智慧软文Day 48#xff1a;【99天精通Python】数据分析 Pandas 入门 - Excel 的终结者
前言
欢迎来到第48天#xff01;
在昨天的课程中#xff0c;我们学习了 NumPy。虽然 NumPy 计算很快#xff0c;但它有个缺点#xff1a;它没有标签。
比如一个二维数组#xff0c;你很难直观…Day 48【99天精通Python】数据分析 Pandas 入门 - Excel 的终结者前言欢迎来到第48天在昨天的课程中我们学习了 NumPy。虽然 NumPy 计算很快但它有个缺点它没有标签。比如一个二维数组你很难直观地看出第 1 列是姓名还是年龄。为了解决这个问题基于 NumPy 构建的Pandas诞生了。它引入了两个核心数据结构Series带标签的一维数组像 Excel 的一列。DataFrame带标签的二维表格像整个 Excel 表。Pandas 是 Python 数据分析领域的绝对王者。掌握了它你就可以轻松完成 Excel 能做的一切以及 Excel 做不了的大数据处理。本节内容Pandas 安装Series 的创建与索引DataFrame 的创建与基本属性读写文件 (read_csv, to_excel)数据的查看与基础统计实战练习超市销售数据分析一、安装与导入pipinstallpandas openpyxl按照惯例我们在代码中这样导入importpandasaspdimportnumpyasnp二、Series带标签的数组Series 就像是一个字典和数组的结合体。2.1 创建 Series# 1. 从列表创建 (默认索引 0, 1, 2...)s1pd.Series([10,20,30])print(s1)# 0 10# 1 20# 2 30# dtype: int64# 2. 指定索引 (Index)s2pd.Series([100,99,88],index[Alice,Bob,Charlie])print(s2)# Alice 100# Bob 99# Charlie 88# dtype: int64# 3. 从字典创建 (键自动变成索引)data{Apple:5.0,Banana:3.5,Cherry:10.0}s3pd.Series(data)print(s3)2.2 索引与切片Series 既支持数字下标也支持标签索引。print(s2[Alice])# 100 (标签索引)print(s2[0])# 100 (位置下标)print(s2[Alice:Bob])# 切片 (包含结尾)# Alice 100# Bob 99三、DataFrame表格数据DataFrame 是 Pandas 的核心。它有行索引 (index) 和列索引 (columns)。3.1 创建 DataFrame# 1. 从字典列表创建 (最常用)data{Name:[Tom,Jerry,Spike],Age:[10,8,12],Score:[88,92,75]}dfpd.DataFrame(data)print(df)# Name Age Score# 0 Tom 10 88# 1 Jerry 8 92# 2 Spike 12 753.2 读写文件 (IO)Pandas 最强大的地方在于一行代码读写各种格式。# 写入 CSVdf.to_csv(students.csv,indexFalse)# indexFalse 不保存行号# 写入 Exceldf.to_excel(students.xlsx,indexFalse)# 读取 CSVdf_newpd.read_csv(students.csv)四、查看数据当数据量很大时几万行我们不可能直接 print 整个 df。# 1. 查看前几行 / 后几行print(df.head(2))# 前2行print(df.tail(1))# 后1行# 2. 查看基本信息 (列名、非空数量、类型)print(df.info())# 3. 统计摘要 (平均值、最大值、四分位数)print(df.describe())五、数据的选取 (Selection)Pandas 提供了多种取值方式初学者容易晕这里只讲最核心的。5.1 取列 (Column)# 取单列 (返回 Series)print(df[Name])# 取多列 (返回新的 DataFrame)print(df[[Name,Score]])5.2 loc vs iloc (行选取)loc: 根据标签(Label) 取值。iloc: 根据整数位置(Integer) 取值。# 设置 Name 为索引方便演示dfdf.set_index(Name)# Age Score# Name# Tom 10 88# Jerry 8 92# Spike 12 75# --- loc (标签) ---print(df.loc[Tom])# 取 Tom 这一行print(df.loc[Tom,Score])# 取 Tom 的 Score (88)# --- iloc (位置) ---print(df.iloc[0])# 取第0行 (Tom)print(df.iloc[0,1])# 取第0行第1列 (Score - 88)六、实战练习超市销售分析假设我们有一份销售数据data{Product:[Apple,Banana,Milk,Apple,Milk],Price:[5,3,10,5,10],Quantity:[10,20,5,8,12],Region:[North,South,North,South,South]}dfpd.DataFrame(data)任务计算每笔订单的销售额 (Total Price * Quantity)。筛选出销售额大于 50 的订单。按区域 (Region) 统计总销售额。代码实现# 1. 新增一列 Total# Pandas 支持列与列直接运算 (基于 NumPy 广播机制)df[Total]df[Price]*df[Quantity]print(df)# 2. 筛选 (Boolean Indexing)# 语法同 NumPy: df[条件]high_salesdf[df[Total]50]print(\n--- 大额订单 ---)print(high_sales)# 3. 分组统计 (Group By)# 类似于 SQL: SELECT Region, SUM(Total) FROM table GROUP BY Regionregion_salesdf.groupby(Region)[Total].sum()print(\n--- 区域销售额 ---)print(region_sales)# Region# North 100# South 220# Name: Total, dtype: int64七、常见问题Q1loc和iloc怎么选如果你知道那一行的名字Index用loc。如果你只想遍历或者取前 10 行用iloc。Q2如何删除一行或一列使用drop方法。df.drop(Age, axis1): 删除列。df.drop(Tom, axis0): 删除行。注意drop默认返回新对象如果要在原对象修改需加上inplaceTrue。Q3SettingWithCopyWarning 是什么当你尝试df[df[A]0][B] 1时会报这个警告。Pandas 不确定你是要修改原数据还是副本。建议使用loc显式赋值df.loc[df[A]0, B] 1。八、小结Pandas 核心数据结构文件 IO数据选取Series (一维带标签)DataFrame (二维表)read_csv / to_csvread_excel / to_exceldf[col] (取列)loc[label] (标签取行)iloc[0] (位置取行)df[df[A]0] (条件筛选)关键要点DataFrame是我们操作的主要对象。列操作直接用df[col]行操作用loc/iloc。列运算非常方便df[A] df[B]。groupby是分组统计的神器。九、课后作业成绩表生成创建一个包含 5 名学生、3 门课语数外成绩的 DataFrame。计算每个学生的总分并新增一列Total。计算每门课的平均分。筛选不及格在上面的成绩表中筛选出数学不及格 (60) 的所有学生信息。文件转换手动创建一个 Excel 文件data.xlsx随便填点数据写代码将其读取并转换为 CSV 文件。下节预告Day 49Pandas 进阶 - 数据清洗与合并- 真实数据往往是脏乱差的缺失值、重复值、格式错误。明天我们学习如何给数据洗澡并将多张表拼接在一起。系列导航上一篇Day 47 - NumPy进阶下一篇Day 49 - Pandas进阶待更新