华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(五)(2)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(五)(2)

67. 如何在 Pandas DataFrame 中添加新列?


可以使用 + 运算符、直接赋值或者 insert() 将新列添加到 Pandas 数据帧,如下所示:

import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}) 
# 创建新的 Series
df['third']= = pd.Series([7, 8, 9])
#To add new column third
df += new_column    
print (df)    
# 创建新的 Series
new_column = pd.Series([10, 11, 12])
# 分配新列到 DataFrame
df['D'] = new_column
print(df)
# 定义新列的名称和数据
new_column_name = 'E'
new_column_data = [13, 14, 15]
# 在指定位置插入新列
df.insert(loc=1, column=new_column_name, value=new_column_data)
print(df)  


68. 如何从 DataFrame 中删除索引名称、行和列?


  • 要删除索引名称:可以执行 del df.index._name 或者将索引幅值为 None 以按名称删除索引。
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 设置索引名称为 'Index_Name'
df.index.name = 'Index_Name'
print(df)
# 删除索引名称
del df.index._name      # 等效于 df.index._name = None
print(df)
'''
输出:
          A  B
Index_Name      
0           1  4
1           2  5
2           3  6
   A  B
0  1  4
1  2  5
2  3  6
'''

注意:如果在 del df.index._name 之前没有设置索引的名称,那么将提示 AttributeError 错误,因为它只会删除已经存在的索引名称。

  • 从 DataFrame 删除行/列:drop() 方法用于从 DataFrame 中删除行/列。axis=0 表示删除指定行或多行,axis=1 表示删除指定列或多列。
import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 删除指定行
df_without_rows = df.drop([0, 2])
print(df_without_rows)
# 创建一个示例 DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
# 删除指定列
df_without_columns = df.drop(['A'], axis=1)
print(df_without_columns)


69. 如何获得序列 A 中没有的序列 B 中的项?


要获取 Series A 中没有的 Series B 中的项,可以使用 Pandas 的 isin() 方法和布尔索引。

以下是一种常见的方法:

import pandas as pd
# 创建示例 Series
series_a = pd.Series([1, 2, 3, 4])
series_b = pd.Series([3, 4, 5, 6])
# 使用 isin() 方法检查 Series B 中的项是否在 Series A 中
is_in_series_a = series_b.isin(series_a)
# 使用布尔索引获取 Series B 中不在 Series A 中的项
result = series_b[~is_in_series_a]
print(result)

输出结果如下所示,即为 Series A 中没有的 Series B 中的项:

2    5
3    6
dtype: int64

注意:以上代码假设 Series A 和 Series B 的数据类型相同(都为整数)。如果 Series A 和 Series B 的数据类型不同,需要先将它们转为相同的数据类型。


70. 如何获得序列 A 和序列 B 的非公共项?


要获取序列 A 和序列 B 的非公共项,可以使用 Pandas 的 isin() 方法和布尔索引的结合。

以下是一种常见的方法:

import pandas as pd
# 创建示例 Series
series_a = pd.Series([1, 2, 3, 4])
series_b = pd.Series([3, 4, 5, 6])
# 使用 isin() 方法检查 Series A 和 Series B 中的元素是否相互存在
is_in_series_a = series_b.isin(series_a)
is_in_series_b = series_a.isin(series_b)
# 使用布尔索引获取各自序列中不在另一个序列中的项
result = series_a[~is_in_series_b]._append(series_b[~is_in_series_a])
print(result)

输出结果如下所示,即为序列 A 和序列 B 的非公共项:

0    1
1    2
2    5
3    6
dtype: int64


71. Pandas 库可以识别导入的日期和时间数据吗?


是的,Pandas 库可以识别和处理日期和时间数据。当从不同来源导入数据时,Pandas 提供了多种方法来解析和识别日期和时间。

  1. 使用 pd.to_datetime() 函数:可以使用 pd.to_datetime() 函数将字符串转换为 Pandas 的日期时间对象。它可以自动解析多种日期和时间格式,并将其转换为标准的日期时间格式。
import pandas as pd
# 示例数据
data = ['2022-01-01 12:00:00', '2022-01-02 13:30:45', '2022-01-03 15:15:00']
# 转换为日期时间对象
datetime_data = pd.to_datetime(data)
print(datetime_data)

输出结果如下所示:

DatetimeIndex(['2022-01-01 12:00:00', '2022-01-02 13:30:45', '2022-01-03 15:15:00'], dtype='datetime64[ns]', freq=None)
  1. 在这个例子中,pd.to_datetime() 函数将日期时间字符串列表转换为 Pandas 的 DatetimeIndex 对象,这是一个包含日期和时间的索引
  2. dateutil.parser.parse():在某些情况下,日期和时间可能具有非标准的格式,无法被自动解析。可以使 dateutil.parser.parse() 函数来解析这些字符串。它是 dateutil 库中的一个功能强大的日期时间解析器。
from dateutil.parser import parse
import pandas as pd
# 示例数据
data = ['01/01/2022 12pm', '01/02/2022 01:30pm', '01/03/2022 03:45pm']
# 解析日期时间字符串
datetime_data = [parse(dt) for dt in data]
# 转换为 pandas 的日期时间对象
datetime_data = pd.to_datetime(datetime_data)
print(datetime_data)
  1. 输出结果如下所示:
DatetimeIndex(['2022-01-01 12:00:00', '2022-01-02 13:30:00', '2022-01-03 15:45:00'], dtype='datetime64[ns]', freq=None)

Python 函数库面试问题:待更新

相关文章
|
2月前
|
数据采集 机器学习/深度学习 数据可视化
了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。
【7月更文挑战第5天】了解数据科学面试中的Python数据分析重点,包括Pandas(DataFrame)、NumPy(ndarray)和Matplotlib(图表绘制)。数据预处理涉及缺失值(dropna(), fillna())和异常值处理。使用describe()进行统计分析,通过Matplotlib和Seaborn绘图。回归和分类分析用到Scikit-learn,如LinearRegression和RandomForestClassifier。
60 3
|
2月前
|
Python
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
155. 最小栈 力扣 python 空间换时间 o(1) 腾讯面试题
|
2月前
|
存储 算法 索引
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
1124. 表现良好的最长时间段 (python) 前缀和 分类讨论 最大长度 力扣 面试题
|
2月前
|
算法 Java Linux
python中的面试常考知识点
python中的面试常考知识点
|
4月前
|
存储 数据可视化 算法
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
最新Python-Matplotlib可视化(9)——精通更多实用图形的绘制,2024年最新小米面试题库
|
4月前
|
数据采集 Java 数据挖掘
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
最新Python+OpenCV+dlib汽车驾驶员疲劳驾驶检测!,2024年最新网易云java面试
|
4月前
|
SQL 分布式计算 前端开发
10个常见的python面试问题_python面试常见问题
10个常见的python面试问题_python面试常见问题
|
22天前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
22天前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
22天前
|
Java
【Java基础面试三十七】、说一说Java的异常机制
这篇文章介绍了Java异常机制的三个主要方面:异常处理(使用try、catch、finally语句)、抛出异常(使用throw和throws关键字)、以及异常跟踪栈(异常传播和程序终止时的栈信息输出)。