今天是第93天,我们将正式踏入数据分析的核心领域。Pandas 之所以强大,离不开它的两大基石数据结构:Series 和 DataFrame。掌握它们,你就拿到了处理表格数据的“万能钥匙”🔑。Series:一维带标签数组
Series 可以理解为**“自带索引的一维数组”**。无论是整数、浮点数还是字符串,它都能装下,并且支持通过“标签”精准定位。🛠️ 如何创建?
import pandas as pd# 1. 从列表创建(默认生成 0,1,2... 索引)data_list = [1, 2, 3, 4, 5]s1 = pd.Series(data_list)# 2. 从字典创建(字典的键自动成为索引)data_dict = {'a': 1, 'b': 2, 'c': 3}s2 = pd.Series(data_dict)# 3. 自定义索引s3 = pd.Series(data_list, index=['one', 'two', 'three', 'four', 'five'])
💡 小贴士:字典转 Series 是处理映射关系最高效的方式之一。🔍 如何访问?
# 按位置访问print(s1[0]) # 输出: 1# 按标签访问print(s2['b']) # 输出: 2# 切片访问print(s1[:2]) # 输出前两个# 按索引列表访问print(s3[['one', 'three']]) # 输出指定标签的值
📊 常用属性与方法
len(s1) # 长度s1.index # 索引对象s1.values # 底层值数组s1.max() # 最大值s1.min() # 最小值s1.sum() # 求和s1.mean() # 均值
DataFrame:二维“数据表格”
如果把 Series 比作一列数据,那 DataFrame 就是完整的 Excel 表格或数据库表。它由行(Index)和列(Columns)组成,每一列本质上就是一个 Series。
🛠️ 如何创建?
import numpy as np# 1. 从字典创建(最推荐,键名自动作列名)df1 = pd.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']})# 2. 从二维数组创建(需手动指定列名)arr = np.array([[1, 'Alice', 25], [2, 'Bob', 30], [3, 'Charlie', 35]])df2 = pd.DataFrame(arr, columns=['ID', 'Name', 'Age'])
核心访问:iloc vs loc
这是 Pandas 最容易踩坑的地方,请务必分清:# iloc:纯整数位置访问(行号, 列号)print(df1.iloc[0, 1]) # 第1行第2列 → Alice# loc:标签索引访问(行标签, 列名)print(df1.loc[1, 'Name']) # 索引为1的行,Name列 → Bob# 获取整行 / 整列print(df1.iloc[1]) # 第2行整行print(df1['City']) # 'City' 整列
📊 常用属性与方法
df1.shape # 形状 (行数, 列数) → (3, 3)df1.columns # 列名df1.index # 行索引df1.describe() # 数值列描述性统计(计数/均值/标准差/最值等)df1.head() # 预览前5行df1.tail() # 预览后5行
📥 实战高频:读取外部文件
df_csv = pd.read_csv('data.csv') # 读取 CSVdf_excel = pd.read_excel('data.xlsx') # 读取 Exceldf_json = pd.read_json('data.json') # 读取 JSON
⚠️ 注意:请确保文件路径正确,相对路径默认以当前 Python 脚本所在目录为准。🚀 综合实战:一气呵成
将今日知识点串联,建议亲手敲一遍,肌肉记忆比看十遍都管用!
import pandas as pdimport numpy as np# 1. 创建与访问 Seriess = pd.Series([1, 2, 3, 4, 5])print("Series最大值:", s.max())# 2. 创建与访问 DataFramedf = pd.DataFrame({ 'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'Los Angeles', 'Chicago']})print("\n第一行数据:\n", df.iloc[0])print("DataFrame形状:", df.shape)# 3. 描述性统计print("\n数值列统计:\n", df.describe())
💻 预期输出:控制台将依次打印 Series 的最大值、DataFrame 的首行数据、形状 (3, 3),以及 Age 列的计数、均值、标准差、最小/最大值等统计信息。📝 今日知识速记卡
结构 | 维度 | 核心特点 | 典型场景 |
|---|
Series
| 1维 | 带索引的一维数组 | 单列数据、时间序列、基础统计 |
DataFrame
| 2维 | 表格结构,列是 Series | 数据清洗、分析、可视化、建模输入 |
避坑指南:
iloc 看位置,loc 看标签,混用极易触发 IndexError 或 KeyError。.describe() 默认只对数值列生效,字符串列会被自动跳过(符合设计逻辑,无需手动过滤)。- 创建 DataFrame 时,字典的键顺序即为列顺序;若需调整,可使用
columns=['列名1', '列名2'] 参数。
💬 互动话题: 你在日常处理数据时,更习惯用 loc 还是 iloc?有没有被索引报错“坑”过的经历?欢迎在评论区分享你的踩坑与解法~👇
📌 点赞 + 在看 + 星标,明天推送准时送达!我们第94天见!🐾