pandas基本数据
🧩 题目一:VP33 牛客网的刷题数据
📄 题目描述
牛客网的用户数据记录在文件 Nowcoder.csv
中,包含如下字段(字段之间以逗号间隔):
Nowcoder_ID
:用户 IDLevel
:等级Achievement_value
:成就值
牛牛想要获取该文件中每一列的列名,以及该文件包含了多少位用户的数据,请你帮他输出。
输入描述:
数据集直接从当前目录下的 Nowcoder.csv
文件中读取。
输出描述:
第一行以列表形式输出所有列名,第二行直接输出总用户数。
✅ 参考代码
import pandas as pd
Nowcoder = pd.read_csv('Nowcoder.csv', sep=',', dtype=object)
col = [column for column in Nowcoder]
print(col)
print(Nowcoder.shape[0])
🔍 核心知识点解析
代码 | 说明 |
---|---|
import pandas as pd | 导入 pandas 库,pd 是常用简称 |
pd.read_csv(...) | 读取 CSV 文件,返回 DataFrame |
sep=',' | 指定分隔符为逗号(默认可省略) |
dtype=object | 所有列以“文本”类型读取,避免数字被自动转换 |
for column in Nowcoder | 遍历 DataFrame 时,默认遍历列名 |
Nowcoder.shape[0] | shape 返回 (行数, 列数) ,[0] 取行数(即用户数) |
💡 更简洁写法(推荐)
print(Nowcoder.columns.tolist()) # 直接获取列名列表
print(len(Nowcoder)) # 直接获取行数
🧩 题目二:VP34 店铺的订单
📄 题目描述
某线下店铺的销售记录在 Order.csv
中,包含如下字段(字段之间以逗号间隔):
order_number
:订单号product_type
:产品类型(如 phone、pad、watch)price
:价格time
:购买时间
店长想查看手机订单(phone
)的全部信息,请使用 pandas
输出。
输入描述:
数据集直接从当前目录下的 Order.csv
文件中读取。
输出描述:
直接输出产品类型为 phone
的全部信息,包括行号。
✅ 参考代码
import pandas as pd
shop = pd.read_csv('Order.csv', sep=',', dtype=object)
print(shop[shop['product_type'] == 'phone'])
🔍 核心知识点解析
关键技术:布尔索引(Boolean Indexing)
shop['product_type'] == 'phone'
- 返回一个
True/False
的Series
,表示每行是否为手机订单
shop[...]
- 使用布尔序列筛选原数据,只保留
True
的行
✅ 输出自动包含原始行号(index),符合题目要求。
💡 扩展:常用筛选方式
需求 | 写法 |
---|---|
等于 | df[df['col'] == 'value'] |
不等于 | df[df['col'] != 'value'] |
多条件(且) | (df['A']=='X') & (df['B']=='Y') |
多条件(或) | (df['A']=='X') | (df['B']=='Y') |
模糊匹配 | df[df['col'].str.contains('phone')] |
多值匹配 | df[df['col'].isin(['phone', 'watch'])] |
⚠️ 注意:
&
和|
必须加括号,不能用and
/or
🧰 Pandas 复习要点速查表
操作 | 代码示例 |
---|---|
读取 CSV | pd.read_csv('file.csv') |
查看前几行 | df.head() |
查看列名 | df.columns.tolist() |
获取行数 | len(df) 或 df.shape[0] |
布尔筛选 | df[df['col'] == 'value'] |
多条件筛选 | (df['A']==1) & (df['B']==2) |
数据类型 | df.dtypes |
查看信息 | df.info() |
⚠️ 常见注意事项
- 文件路径:确保
Nowcoder.csv
和Order.csv
在代码同目录下。 - 编码问题:如遇中文乱码,加参数
encoding='utf-8'
。 - 数据类型:
dtype=object
时,数字是字符串,不能直接计算,需用pd.to_numeric()
转换。 - 空值处理:缺失值为
NaN
,可用df.dropna()
或df.fillna(0)
处理。
🎯 一句话复习总结:
pandas
的核心是DataFrame
,用read_csv
读数据,用布尔索引
筛数据,用.shape
和.columns
看结构。