Python-pandas面试题总结
一、数据结构基础
- 
Series 与 DataFrame 的区别
- Series 是一维标签数组,只能存储单一类型数据;DataFrame 是二维表格型数据结构,不同列可以存储不同数据类型。
 - Series 由 
值(values)和索引(index)组成; DataFrame由多个列(Series)组成,每列有独立列名。 - 示例:
import pandas as pd
# 创建 Series
s = pd.Series([1, 3, 5], index=['a', 'b', 'c'])
# 创建 DataFrame
df = pd.DataFrame({'A': [1, 2], 'B': ['x', 'y']}) 
 - 
如何从字典/列表创建 DataFrame
- 使用 
pd.DataFrame()并传入字典或嵌套列表,键作为列名。 
 - 使用 
 
      从字典创建 DataFrame
		      1)基础字典格式
		      字典的键作为列名,值作为对应列的数据列表。
		      import pandas as pd
		      data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35]}
		      df = pd.DataFrame(data)
		      输出:
		         Name  Age
		      0  Alice   25
		      1    Bob   30
		      2 Charlie 35
		      说明:列名自动对齐,数据按行填充。
		      2)处理嵌套字典
		      若字典值为字典,则键会作为列的多级索引(适用于复杂结构):
		      data = {'Info': {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}}
		      df = pd.DataFrame(data['Info'])
		      输出:
		        Name  Age
		      0 Alice   25
		      1   Bob   30
      从列表创建 DataFrame
		      1)列表的列表(嵌套列表)
		      每个子列表表示一行数据,需配合 columns 参数指定列名:
		      data = [['Alice', 25], ['Bob', 30], ['Charlie', 35]]
		      df = pd.DataFrame(data, columns=['Name', 'Age'])
		      输出:
		         Name  Age
		      0  Alice   25
		      1    Bob   30
		      2 Charlie 35
		      2)字典列表
		      列表中的每个字典代表一行数据,键自动对齐为列名:
		      data = [{'Name': 'Alice', 'Age': 25}, {'Name': 'Bob', 'Age': 30}]
		      df = pd.DataFrame(data)
		      输出:
		        Name  Age
		      0 Alice   25
		      1   Bob   30
		      3)配合 NumPy 数组
		      若数据为 NumPy 数组,可直接转换并指定列名:
		      import numpy as np
		      arr = np.array([['Alice', 25], ['Bob', 30]])
		      df = pd.DataFrame(arr, columns=['Name', 'Age'])
二、数据读取与查看
- 读取 CSV 文件
- 使用 
pd.read_csv('file.csv'),可选参数如parse_dates处理日期格式。
示例 CSV 文件内容 (data.csv):
date,value
2023-01-05,100
2023-02-10,200
读取并解析日期列:
df = pd.read_csv('data.csv', parse_dates=['date'])
print(df.dtypes)
输出:
date datetime64[ns]
value int64 
 - 使用 
 - 查看数据基本信息
df.head(n)查看前 n 行,df.info()显示数据类型,df.describe()统计数值列摘要。
 
三、数据处理与清洗
- 处理缺失值
df.dropna()删除缺失值行/列,df.fillna(value)填充指定值或统计量(如均值)。
 - 删除重复值
df.drop_duplicates()删除重复行。
 - 类型转换
df.astype()修改列数据类型,例如将字符串转为数值。
 
四、数据筛选与聚合
- 条件筛选
- 布尔索引:
df[df['A'] > 10]筛选列 A 大于 10 的行。 
 - 布尔索引:
 - 分组聚合
df.groupby('category').sum()按类别分组求和,或自定义聚合函数。
 - 数据透视表
pd.pivot_table()实现类似 Excel 的透视表功能,支持多维度聚合。
 
五、数据合并与连接
- 合并 DataFrame
pd.concat([df1, df2], axis=0)纵向堆叠,pd.merge(df1, df2, on='key')按列关联。
 - 连接方式差异
- 内连接(
how='inner')保留共有键, - 外连接(
how='outer')保留所有键。 
 - 内连接(
 
六、时间序列处理
- 解析日期数据
- 通过 
pd.to_datetime(df['date'])转换日期字符串为时间戳。 
 - 通过 
 - 时间窗口计算
- 使用 
df.resample('D').mean()按天重采样并计算均值。 
 - 使用 
 
七、性能优化
- 内存优化
- 调整数据类型(如 
int32替代int64)减少内存占用。 
 - 调整数据类型(如 
 - 向量化操作
- 优先使用内置函数(如 
df.apply())替代循环,提升效率。 
 - 优先使用内置函数(如 
 
高频进阶问题示例
- 如何将多个 Series 合并为 DataFrame:
pd.concat([s1, s2], axis=1)。 - 如何设置或重置索引:
df.set_index('col')和df.reset_index()。 
本文来自博客园,作者:业余砖家,转载请注明原文链接:https://www.cnblogs.com/yeyuzhuanjia/p/18831733
                    
                
                
            
        
浙公网安备 33010602011771号