Python 数据分析学习笔记:Pandas 查看数据

发布于:2025-08-30 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、关键函数与概念详解

1. pd.read_csv():读取 CSV 文件
pd.read_csv(filename, sep=',', dtype=object)
  • 功能:从 CSV 文件加载数据为 DataFrame
  • 参数说明
    • filename:文件路径
    • sep:分隔符,默认是逗号 ,
    • dtype=object:强制所有列的数据类型为 object(通常用于字符串或混合类型),避免 pandas 自动推断类型导致的问题(如将 ID 误识别为数字)。

✅ 示例:

df = pd.read_csv('data.csv', sep=',', dtype=object)

2. .head(n):查看前 n 行数据
df.head(6)
  • 返回 DataFrame 的前 n 行(默认 n=5)。
  • 用于快速检查数据内容、结构和格式。

3. .shape:获取数据集大小
df.shape
  • 返回一个元组 (行数, 列数)
  • 是了解数据集“体量”的最基本方法。

✅ 示例:

rows, cols = df.shape
print(f"数据集有 {rows} 行,{cols} 列")

4. .iloc[]:基于位置的索引(Integer-location based indexing)

.ilocpandas最安全、最推荐的按位置访问数据的方式。

用法 说明
df.iloc[10] 获取第 11 行(索引从 0 开始)
df.iloc[10:21] 获取第 11 到 21 行(左闭右开,包含 11,不包含 21)
df.iloc[:, 2] 获取第 3 列(所有行)
df.iloc[10, 3] 获取第 11 行第 4 列的单个值

📌 核心规则

  • 索引从 0 开始:第 1 行 → 索引 0,第 11 行 → 索引 10
  • 切片左闭右开[start:end)end 不包含在内

5. 列选择:df['column_name']
df['Language']
  • 返回指定列的一维数据结构(Series)。
  • 可以与 .iloc 结合使用:df.iloc[10:21]['Language']

二、题目解析与正确代码

DA1 用pandas查看牛客网用户数据

描述
输出 Nowcoder.csv 数据集的前 6 行数据。

输入描述
数据集直接从当前目录下的 Nowcoder.csv 文件中读取。

输出描述
输出该数据集的前 6 行。

正确代码

import pandas as pd 
n = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
print(n.head(6))

DA2 牛客网用户数据集的大小

描述
获取 Nowcoder.csv 数据集的行数与列数。

输入描述
数据集直接从当前目录下的 Nowcoder.csv 文件中读取。

输出描述
输出该数据集的行数与列数。

正确代码

import pandas as pd 
n = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
print(n.shape)

DA3 牛客网的第11位用户

描述
输出数据集中第 11 行用户的全部信息。

输入描述
数据集直接从当前目录下的 Nowcoder.csv 文件中读取。

输出描述
输出第 11 行的全部信息,每列信息单独成行。

正确代码

import pandas as pd 
n = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
print(n.iloc[10])  # 索引10对应第11行

DA4 统计牛客网部分用户使用语言

描述
输出数据集中第 10 行到第 20 行用户的常用语言。

输入描述
数据集直接从当前目录下的 Nowcoder.csv 文件中读取。

输出描述
输出第 10 行到第 20 行的常用语言,每行数据单独成行。

正确代码

import pandas as pd 
n = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
print(n.iloc[9:20]['Language'])  # 第10行索引为9,第20行索引为19,切片[9:20)包含9到19

🔍 注意iloc[9:20] 是因为:

  • 第 10 行 → 索引 9
  • 第 20 行 → 索引 19
  • 切片 [9:20) 包含索引 9, 10, ..., 19,正好是第 10 到 20 行。

三、扩展知识与最佳实践

✅ 1. .iloc vs .loc
索引器 基于 示例 说明
.iloc 位置(整数) df.iloc[10] 推荐用于按顺序访问,不依赖索引标签
.loc 标签(Label) df.loc[10] 依赖行索引标签。如果索引被重置或修改,行为可能不同

💡 除非你明确知道索引标签,否则优先使用 .iloc

✅ 2. 处理空值(NaN)
# 检查是否有空值
print(df.isnull().any())  # 每列是否有空值
print(df.isnull().sum())  # 每列空值数量

# 删除空值行
df_clean = df.dropna()

# 填充空值
df_filled = df.fillna('未知')
✅ 3. 数据类型检查与转换
print(df.dtypes)  # 查看每列的数据类型

# 转换类型(如将字符串转为数值)
df['Achievement_value'] = pd.to_numeric(df['Achievement_value'], errors='coerce')
✅ 4. 链式操作与性能
# 链式操作是 pandas 的惯用法
result = (df
          .iloc[9:20]
          .loc[:, 'Language']  # 更明确地选择列
          .tolist())           # 转为列表

五、常见错误与调试技巧
错误现象 原因 解决方法
KeyError 列名拼写错误或不存在 检查 df.columns
IndexError 访问的行索引超出范围 检查 df.shape
数据被截断或显示不全 pandas 默认设置 pd.set_option('display.max_rows', None)
数字 ID 被转成整数 pandas 自动推断类型 使用 dtype=object 或 dtype={'Nowcoder_ID': str}

网站公告

今日签到

点亮在社区的每一天
去签到