人工智能与数据分析的关系及 Python Pandas 快速入门
阐述了人工智能、机器学习与深度学习的层级关系,重点介绍了 Python Pandas 库的基础知识。内容涵盖 Pandas 的 Series 与 DataFrame 数据结构、多种文件格式的读写方法、基于 loc 和 iloc 的数据选择技巧、数据排序与删除操作、常用统计汇总函数以及数据对齐机制。文章旨在帮助初学者建立清晰的数据分析框架,并提供实用的代码示例与最佳实践建议。

阐述了人工智能、机器学习与深度学习的层级关系,重点介绍了 Python Pandas 库的基础知识。内容涵盖 Pandas 的 Series 与 DataFrame 数据结构、多种文件格式的读写方法、基于 loc 和 iloc 的数据选择技巧、数据排序与删除操作、常用统计汇总函数以及数据对齐机制。文章旨在帮助初学者建立清晰的数据分析框架,并提供实用的代码示例与最佳实践建议。

在开始学习具体的数据分析工具之前,理解相关概念的背景至关重要。人工智能(Artificial Intelligence, AI)、机器学习(Machine Learning, ML)和深度学习(Deep Learning, DL)之间的关系常被混淆。
广义上的人工智能泛指通过计算机实现人的思维,使机器像人一样决策。机器学习是实现人工智能的一种核心技术,它利用算法从数据中学习规律以解决特定问题。深度学习则是机器学习的一个分支,主要基于神经网络模型,在处理图像、语音等富媒体数据时表现优异,例如 AlphaGo 战胜人类围棋选手就是深度学习的典型应用。
简单来说,关系层级为:人工智能包含机器学习,机器学习包含深度学习。对于简单问题(如奖学金评选、业绩统计),通常使用传统的数据分析即可;而对于复杂问题(如商品推荐、人脸识别),则需要借助机器学习或深度学习算法。
Pandas 是 Python 语言中用于数据分析的核心库之一。它的名字来源于'Panel Data'(面板数据)和'Python Data Analysis'的组合。Pandas 基于 NumPy 构建,提供了高性能、易于使用的数据结构和数据分析工具。
安装后,通常按以下习惯导入:
import pandas as pd
Pandas 主要有两种核心数据结构:Series 和 DataFrame。
Series 是一维数组,类似表格中的一列。它可以存储任何数据类型,由索引(index)和数据值组成。
创建示例:
s = pd.Series([3, -5, 7, 4], index=['a', 'b', 'c', 'd'])
参数说明:
data:一组数据(ndarray 类型)。index:数据索引标签,默认从 0 开始。dtype:数据类型,默认自动推断。name:设置序列名称。DataFrame 是二维表格型数据结构,包含有序的列,每列可以是不同的数据类型(数值、字符串、布尔值等)。它既有行索引也有列索引,可视为由多个 Series 组成的字典。
创建示例:
data = {
'Country': ['Belgium', 'India', 'Brazil'],
'Capital': ['Brussels', 'New Delhi', 'Brasília'],
'Population': [11190846, 1303171035, 207847528]
}
df = pd.DataFrame(data, columns=['Country', 'Capital', 'Population'])
CSV(Comma-Separated Values)是最通用的文本数据格式。
# 读取 CSV
pd.read_csv('file.csv', header=None, nrows=5)
# 写入 CSV
df.to_csv('myDataFrame.csv')
注意处理编码问题,如 encoding='utf-8-sig'。
Excel 文件常用于商业报表。
# 读取 Excel
pd.read_excel('file.xlsx')
# 写入 Excel
df.to_excel('dir/myDataFrame.xlsx', sheet_name='Sheet1')
# 读取多表 Excel
xlsx = pd.ExcelFile('file.xls')
df = pd.read_excel(xlsx, 'Sheet1')
Pandas 可与数据库交互。
from sqlalchemy import create_engine
engine = create_engine('sqlite:///:memory:')
# 执行查询
pd.read_sql("SELECT * FROM my_table;", engine)
# 写入表
df.to_sql('myDf', engine, if_exists='replace')
可以直接访问序列或数据框的子集。
# 取序列值
val = s['a']
# 取数据框子集
subset = df[1:]
val = df.iloc[0, 0] # 第 0 行第 0 列
val = df.loc[0, 'Country']
ix,现推荐使用 loc 或 iloc。通过逻辑条件筛选数据。
# 小于 -1 或大于 2
result = s[(s < -1) | (s > 2)]
# 人口超过 12 亿的国家
large_pop = df[df['Population'] > 1200000000]
修改特定索引项的值。
s['a'] = 6
# 删除序列索引
s.drop(['a', 'c'])
# 删除数据框列
df.drop('Country', axis=1)
# 按索引排序
df.sort_index()
# 按某列值排序
df.sort_values(by='Country')
# 排名
df.rank()
print(df.shape) # (行,列)
print(df.index) # 行索引
print(df.columns) # 列名
print(df.info()) # 详细信息
print(df.count()) # 非空值计数
print(df.sum()) # 合计
print(df.mean()) # 平均值
print(df.median()) # 中位数
print(df.describe()) # 基础统计概览
print(df.idxmin()) # 最小值索引
对数据应用自定义函数。
f = lambda x: x * 2
df.apply(f) # 按列应用
# df.applymap(f) # 旧版本按元素应用,新版建议用 map
当两个对象索引不一致时,Pandas 会自动对齐,缺失部分填充为 NaN。
s3 = pd.Series([7, -2, 3], index=['a', 'c', 'd'])
result = s + s3
# b 位置因无对应索引变为 NaN
使用 fill_value 可指定填充值进行运算。
s.add(s3, fill_value=0)
isnull() 情况,根据业务决定是删除还是填充。for 循环遍历行。掌握上述内容,即可应对大部分日常数据分析任务。后续可根据需求深入学习分组聚合(groupby)、透视表(pivot_table)及时间序列分析等高级功能。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online