开心实习之第十七天

今天初探Pandas:

数据世界的高效工具学习心得 在数据科学与计算的学习旅程中,Pandas作为Python数据分析的核心工具,始终是绕不开的重要知识点。通过对这份PPT的系统学习,我不仅梳理了Pandas的核心功能,更在实践案例中体会到它处理结构化数据的高效与便捷。从初识工具到掌握数据处理逻辑,每一步都让我对“如何与数据对话”有了更深的理解。 ## 一、初识Pandas:数据处理的“瑞士军刀” PPT开篇对Pandas的定位让我印象深刻——“一个开源的Python类库,用于数据分析、数据处理、数据可视化”。这看似简单的定义,背后却藏着它成为数据科学领域“标配工具”的原因:**高性能、易用的数据结构、灵活的分析工具**。 在学习前,我对数据处理的认知还停留在Excel的手动操作或NumPy的数组计算,但Pandas的出现打破了这种局限。它既保留了NumPy对数值计算的高效性,又弥补了其在处理“带标签数据”时的不足。比如在处理表格数据时,我们不仅需要数值计算,更需要通过“行名”“列名”快速定位数据、通过“字段含义”筛选信息——而这正是Pandas最擅长的事。可以说,Pandas就像一把为结构化数据量身定制的“瑞士军刀”,让复杂的数据操作变得简单直观。 

二、从安装到入门:工具使用的“第一步” 工欲善其事,必先利其器。PPT中关于Pandas安装与导入的内容,看似基础却至关重要。 安装环节,PPT提供了两种主流方式:`pip install pandas`和`conda install pandas`。实际操作时,我发现使用清华源(`https://pypi.tuna.tsinghua.edu.cn/simple`)能显著提升下载速度,尤其在网络环境不佳时,这个小技巧能避免很多不必要的麻烦。而导入时“`import pandas as pd`”的约定俗成,更体现了Python社区的默契——用简洁的别名“pd”减少重复代码,让后续操作更高效。 这一步的学习让我明白:工具的“易用性”不仅体现在功能上,更体现在入门门槛上。Pandas的安装与导入设计,极大降低了新手的使用成本,让我们能快速从“准备工具”过渡到“实际操作”。 ## 三、核心数据结构:Series与DataFrame的“双面镜” Pandas的核心魅力,在于它为数据设计了两种灵活的数据结构:Series与DataFrame。这两种结构就像“双面镜”,分别对应一维与二维数据场景,却又能无缝配合,共同支撑起复杂的数据操作。 ### 1. Series:带标签的“一维数组” Series被定义为“类似表格中的一个列,类似于一维数组”,但它与普通数组的最大区别在于**“索引(index)”**。PPT中通过列表、ndarray、字典三种创建方式,清晰展示了索引的灵活性: - 用列表创建时,若不指定索引,默认从0开始,适合简单的顺序数据; - 用ndarray创建时,可自定义字符索引(如'a'、'b'),让数据更具可读性; - 用字典创建时,字典的键会自动成为索引,完美适配“键值对”类型的数据(如学生姓名与成绩的对应关系)。 通过`score.index`和`score.values`查看索引与数值的操作,更让我体会到Series的“标签化”优势——不再需要通过位置(如第3个元素)定位数据,而是直接通过有实际含义的标签(如“lisi”)获取信息,这在处理大量数据时能大幅减少错误。 ### 2. DataFrame:表格数据的“万能容器” 如果说Series是“一列数据”,那么DataFrame就是“一整张表”。它既有行索引,又有列索引,能容纳不同类型的列(如数值、字符串、布尔值),完全复刻了Excel表格或数据库表的结构。 PPT中多种创建DataFrame的方式让我意识到它的通用性: - 用列表嵌套列表创建时,通过`columns`参数指定列名,适合手动输入小规模数据; - 用字典创建时,键为列名、值为数据列表,能快速将分散的数据整合为表格; - 用包含字典的列表创建时,即使字典键不完整(如有的字典有'a'、'b'键,有的有'a'、'b'、'c'键),DataFrame也能自动填充缺失值(NaN),体现了对“非结构化数据”的包容。 这种灵活性让DataFrame成为处理现实数据的理想容器——毕竟实际业务中的数据很少是完美对齐的,而DataFrame能轻松应对这种“不完美”。 ## 四、数据查询:用loc()与索引“对话数据” 获取数据后,如何快速查询所需信息?PPT中重点介绍的`loc()`方法,让数据查询变得像“翻书找页”一样简单。 `loc()`最核心的功能是通过“行索引标签”获取数据: - 要获取第一行数据,直接用`df.loc[0]`; - 要获取多行数据,用`df.loc[[0,1]]`; - 若自定义了索引(如用“Chinese”“Math”表示科目),则可直接通过`df.loc["Chinese"]`定位,完全摆脱了“记位置”的困扰。 这种“标签化查询”的设计,比传统的位置索引(如NumPy的`[0,1]`)更符合人类的思维习惯。比如在处理学生成绩表时,我不需要记住“数学成绩在第2行”,只需通过`df.loc["Math"]`就能直接获取,极大提升了代码的可读性和操作效率。 ## 五、数据读取:连接“原始数据”与“分析工具”的桥梁 数据科学的第一步是“获取数据”,而Pandas的读取功能就是连接原始数据与分析工具的桥梁。PPT中介绍的`pd.read_csv()`、`pd.read_excel()`、`pd.read_sql()`,几乎覆盖了日常工作中最常见的数据来源: - 对于CSV、TSV等文本文件,`read_csv()`能自动解析分隔符,快速将文本转为DataFrame; - 对于Excel文件,`read_excel()`支持多sheet读取,无需手动转换格式; - 对于数据库表,`read_sql()`可直接通过SQL语句读取数据,实现“分析-存储”的无缝衔接。 此外,`head()`、`tail()`和`info()`三个辅助函数让数据初探变得高效: - `head(n)`和`tail(n)`分别查看前n行和后n行数据,快速了解数据格式和大致内容; - `info()`则返回数据的基本信息(如行数、列数、各列非空值数量、数据类型),帮我们快速判断数据质量(如是否有缺失值、是否需要转换数据类型)。 在实际练习中,我用`read_csv()`读取了一份NBA球员数据,通过`head(3)`立即看到了“姓名、球队、年龄”等字段,用`info()`发现“Salary”列有缺失值——这些信息为后续的数据清洗指明了方向。 ## 六、处理丢失数据:数据清洗的“必修课” 现实世界的数据往往存在缺失(如“n/a”“na”或空值),若不处理,会直接影响分析结果。PPT中关于丢失数据处理的内容,堪称数据清洗的“入门指南”。 ### 1. 识别缺失值:isnull()的“火眼金睛” `isnull()`函数能逐单元格判断是否为空值,返回布尔值结果(True表示缺失)。但需要注意的是,原始数据中的缺失可能用“n/a”“na”等字符串表示,此时需通过`na_values`参数指定这些“自定义缺失值”,否则Pandas会将其误认为有效数据。比如`df = pd.read_csv('property-data.csv', na_values=["n/a", "na"])`,就能将这些字符串统一转为NaN,确保后续处理的准确性。 ### 2. 处理缺失值:删除或填充的“选择题” 处理缺失值主要有两种思路: - **删除**:用`dropna()`删除包含缺失值的行(默认`axis=0`)。通过`how`参数可选择“有一个缺失就删除(any)”或“全缺失才删除(all)”,适合缺失数据量少的场景; - **填充**:用`fillna()`填充缺失值。可以用固定值(如`fillna(666)`)、均值(`mean()`)或中位数(`median()`)填充。其中,均值适合分布均匀的数据,中位数则更抗异常值干扰(如工资数据中存在极高值时,用中位数填充更合理)。 在处理“property-data.csv”时,我尝试了两种方法:用`dropna()`删除缺失行后,数据量减少但更“干净”;用均值填充“ST_NUM”列后,保留了更多数据,分析结果更全面。这让我明白:没有“绝对正确”的处理方式,需根据数据特点和分析目标选择——而Pandas提供的工具,正是让我们有能力做出这种选择。 ## 七、实践出真知:从课堂练习到能力落地 PPT最后的课堂练习,让我真正体会到“学以致用”的意义。以“五年级三班成绩计算”为例: - 计算最终成绩时,需用“考试成绩×60% + 平时成绩×40%”,通过DataFrame的列运算(如`df['语文最终成绩'] = df['语文考试成绩']*0.6 + df['语文平时成绩']*0.4`)可快速实现; - 计算平均分、最高分等统计量时,`mean()`、`max()`等函数直接作用于列或行,无需手动编写循环; - 整个过程从数据输入到结果输出,仅用十几行代码就完成了Excel中需要大量公式的操作,效率提升显著。 这让我深刻认识到:Pandas的价值不仅在于“功能多”,更在于它将复杂的数据分析逻辑“封装”成简单的函数,让我们能专注于“解决问题”而非“实现细节”。 ## 八、总结与展望 通过这次学习,我不仅掌握了Pandas的核心操作(从数据结构到数据处理),更理解了它的设计逻辑——以“用户友好”为核心,让数据处理从“繁琐的体力活”变成“直观的脑力活”。 未来,我计划在三个方向深化学习:一是结合Matplotlib或Seaborn,用Pandas处理后的数据实现可视化;二是探索更复杂的数据操作(如分组聚合、合并表);三是在实际项目中应用(如分析销售数据、用户行为数据)。 Pandas就像一把钥匙,为我打开了数据科学的大门。它让我明白:数据分析的核心不是工具本身,而是用工具解决问题的思维——而熟练掌握Pandas,正是培养这种思维的第一步。

import numpy as np

# 学生姓名
a = np.array(['小孙', '小张', '小韩'])
# 科目成绩,b[:, :, 0] 为考试成绩,b[:, :, 1] 为平时成绩
b = np.array([
    [[90, 80], [80, 70], [60, 60]],
    [[75, 70], [65, 60], [55, 60]],
    [[55, 80], [66, 60], [77, 70]]
])
# 科目名称
c = ['语文', '数学', '英语']

# 计算最终成绩
d = b[:, :, 0] * 0.6 + b[:, :, 1] * 0.4

# 打印每个同学的最终成绩
for i, name in enumerate(a):
    print(f'{name}:')
    for j, ke in enumerate(c):
        print(f'{ke}: {d[i, j]:.2f}')
    print('\n')

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值