Python酷库之旅-第三方库Pandas(065)

news2024/9/28 15:20:32

目录

一、用法精讲

256、pandas.Series.sparse方法

256-1、语法

256-2、参数

256-3、功能

256-4、返回值

256-5、说明

256-6、用法

256-6-1、数据准备

256-6-2、代码示例

256-6-3、结果输出

257、pandas.DataFrame.sparse方法

257-1、语法

257-2、参数

257-3、功能

257-4、返回值

257-5、说明

257-6、用法

257-6-1、数据准备

257-6-2、代码示例

257-6-3、结果输出

258、pandas.Series.dt.date属性

258-1、语法

258-2、参数

258-3、功能

258-4、返回值

258-5、说明

258-6、用法

258-6-1、数据准备

258-6-2、代码示例

258-6-3、结果输出

259、pandas.Series.dt.time属性

259-1、语法

259-2、参数

259-3、功能

259-4、返回值

259-5、说明

259-6、用法

259-6-1、数据准备

259-6-2、代码示例

259-6-3、结果输出

260、pandas.Series.dt.timetz属性

260-1、语法

260-2、参数

260-3、功能

260-4、返回值

260-5、说明

260-6、用法

260-6-1、数据准备

260-6-2、代码示例

260-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、用法精讲

256、pandas.Series.sparse方法
256-1、语法
# 256、pandas.Series.sparse方法
pandas.Series.sparse()
Accessor for SparseSparse from other sparse matrix data types.
256-2、参数

        无

256-3、功能

        将一个Series对象转换为稀疏数组(SparseArray),这在处理大规模数据时非常有用,特别是当数据包含大量零值或缺失值时。

256-4、返回值

        一个稀疏数组(SparseArray)对象,它是pandas中用于存储稀疏数据的主要数据结构。

256-5、说明

        无

256-6、用法
256-6-1、数据准备
256-6-2、代码示例
# 256、pandas.Series.sparse方法
# 256-1、基本用法
import pandas as pd
s = pd.Series([0, 0, 2, 2, 2], dtype="Sparse[int]")
s1 = s.sparse.density
print(s1)
s2= s.sparse.sp_values
print(s2, end='\n\n')

# 256-2、处理大规模稀疏数据集
import pandas as pd
data = [0, 0, 0, 1, 0, 0, 2, 0, 0, 3]
sparse_series = pd.Series(data).astype(pd.SparseDtype("int", fill_value=0))
print(sparse_series, end='\n\n')

# 256-3、时间序列分析中的缺失数据处理
import pandas as pd
import numpy as np
dates = pd.date_range('2024-01-01', periods=10)
data = [np.nan, 1, np.nan, np.nan, 2, np.nan, np.nan, 3, np.nan, np.nan]
sparse_series = pd.Series(data).astype(pd.SparseDtype("float", fill_value=np.nan))
sparse_series.index = dates
print(sparse_series)
256-6-3、结果输出
# 256、pandas.Series.sparse方法
# 256-1、基本用法
# 0.6
# [2 2 2]

# 256-2、处理大规模稀疏数据集
# 0    0
# 1    0
# 2    0
# 3    1
# 4    0
# 5    0
# 6    2
# 7    0
# 8    0
# 9    3
# dtype: Sparse[int32, 0]

# 256-3、时间序列分析中的缺失数据处理
# 2024-01-01    NaN
# 2024-01-02    1.0
# 2024-01-03    NaN
# 2024-01-04    NaN
# 2024-01-05    2.0
# 2024-01-06    NaN
# 2024-01-07    NaN
# 2024-01-08    3.0
# 2024-01-09    NaN
# 2024-01-10    NaN
# Freq: D, dtype: Sparse[float64, nan]
257、pandas.DataFrame.sparse方法
257-1、语法
# 257、pandas.DataFrame.sparse方法
pandas.DataFrame.sparse()
DataFrame accessor for sparse data.
257-2、参数

        无

257-3、功能

        将一个DataFrame对象转换为稀疏数据框,这在处理大规模数据且数据包含大量零值时非常有用。

257-4、返回值

        一个稀疏数据框(SparseDataFrame)对象,它是pandas中用于存储稀疏数据的主要数据结构。

257-5、说明

        无

257-6、用法
257-6-1、数据准备
257-6-2、代码示例
# 257、pandas.DataFrame.sparse方法
# 257-1、基本用法
import pandas as pd
df = pd.DataFrame({"a": [1, 2, 0, 0],
                  "b": [3, 0, 0, 4]}, dtype="Sparse[int]")
df1 = df.sparse.density
print(df1, end='\n\n')

# 257-2、机器学习中的稀疏特征矩阵
import pandas as pd
import numpy as np
# 示例数据:用户-商品评分矩阵
data = {
    'user_id': [1, 1, 2, 3, 3, 3],
    'item_id': [1, 3, 2, 1, 2, 3],
    'rating': [5, 3, 4, 2, 5, 1]
}
# 创建DataFrame
df = pd.DataFrame(data)
# 创建透视表(用户-商品矩阵)
pivot_df = df.pivot(index='user_id', columns='item_id', values='rating').fillna(0)
# 转换为稀疏DataFrame
sparse_df = pivot_df.astype(pd.SparseDtype("float", 0))
print("稀疏DataFrame:")
print(sparse_df)
# 查看内存使用情况
print("内存使用情况:")
print(sparse_df.memory_usage(deep=True), end='\n\n')

# 257-3、金融数据分析中的时间序列处理
import pandas as pd
import numpy as np
# 创建日期索引
dates = pd.date_range('2024-01-01', periods=5)
# 示例数据:股票价格时间序列(含缺失值)
data = {
    'stock_A': [100, np.nan, 102, np.nan, 105],
    'stock_B': [np.nan, 200, np.nan, 202, 203]
}
# 创建DataFrame
df = pd.DataFrame(data, index=dates)
# 转换为稀疏DataFrame
sparse_df = df.astype(pd.SparseDtype("float", np.nan))
print("稀疏DataFrame:")
print(sparse_df)
# 查看内存使用情况
print("内存使用情况:")
print(sparse_df.memory_usage(deep=True), end='\n\n')

# 257-4、高维数据分析中的稀疏矩阵
import pandas as pd
from scipy.sparse import random
# 创建一个稀疏矩阵(例如,1000个样本,100个特征,稀疏度为95%)
rows = 1000
cols = 100
density = 0.05
sparse_matrix = random(rows, cols, density=density, format='csr')
# 转换为DataFrame
df = pd.DataFrame.sparse.from_spmatrix(sparse_matrix)
print("稀疏DataFrame:")
print(df)
# 查看内存使用情况
print("内存使用情况:")
print(df.memory_usage(deep=True))
257-6-3、结果输出
# 257、pandas.DataFrame.sparse方法
# 257-1、基本用法
# 0.5

# 257-2、机器学习中的稀疏特征矩阵
# 稀疏DataFrame:
# item_id    1    2    3
# user_id
# 1        5.0    0  3.0
# 2          0  4.0    0
# 3        2.0  5.0  1.0
# 内存使用情况:
# Index    24
# 1        24
# 2        24
# 3        24
# dtype: int64

# 257-3、金融数据分析中的时间序列处理
# 稀疏DataFrame:
#             stock_A  stock_B
# 2024-01-01    100.0      NaN
# 2024-01-02      NaN    200.0
# 2024-01-03    102.0      NaN
# 2024-01-04      NaN    202.0
# 2024-01-05    105.0    203.0
# 内存使用情况:
# Index      40
# stock_A    36
# stock_B    36
# dtype: int64

# 257-4、高维数据分析中的稀疏矩阵
# 稀疏DataFrame:
#            0   1         2   3   4   ...        95  96       97        98        99
# 0           0   0         0   0   0  ...         0   0        0         0         0
# 1           0   0         0   0   0  ...  0.399786   0        0         0         0
# 2           0   0         0   0   0  ...         0   0        0         0         0
# 3           0   0         0   0   0  ...         0   0        0         0         0
# 4           0   0         0   0   0  ...         0   0        0         0         0
# ..        ...  ..       ...  ..  ..  ...       ...  ..      ...       ...       ...
# 995         0   0         0   0   0  ...         0   0        0         0  0.269866
# 996         0   0  0.930464   0   0  ...         0   0        0         0         0
# 997         0   0         0   0   0  ...         0   0        0         0         0
# 998         0   0         0   0   0  ...         0   0  0.73455  0.815879         0
# 999  0.605492   0         0   0   0  ...         0   0        0         0         0
#
# [1000 rows x 100 columns]
# 内存使用情况:
# Index    132
# 0        516
# 1        672
# 2        576
# 3        660
#         ...
# 95       576
# 96       540
# 97       636
# 98       732
# 99       540
# Length: 101, dtype: int64
258、pandas.Series.dt.date属性
258-1、语法
# 258、pandas.Series.dt.date属性
pandas.Series.dt.date
Returns numpy array of python datetime.date objects.

Namely, the date part of Timestamps without time and timezone information.
258-2、参数

        无

258-3、功能

        用于获取Series中的日期时间数据的日期部分。

258-4、返回值

        返回一个包含日期的Series对象。

258-5、说明

258-5-1、Series.dt.date只能应用于包含日期时间数据的Series,如果尝试在其他类型的数据上使用该属性,会引发错误。

258-5-2、返回的Series对象中的日期部分为datetime.date类型,而不是datetime.datetime类型。

258-6、用法
258-6-1、数据准备
258-6-2、代码示例
# 258、pandas.Series.dt.date属性
# 258-1、基本用法
import pandas as pd
# 创建包含日期时间数据的Series
date_series = pd.Series(pd.to_datetime(['2022-01-01 12:00:00', '2023-01-02 14:30:00', '2024-01-03 09:15:00']))
# 使用dt.date获取日期部分
date_only_series = date_series.dt.date
print(date_only_series, end='\n\n')

# 258-2、数据清洗和预处理
import pandas as pd
# 创建示例DataFrame
data = {
    'transaction_id': [1, 2, 3, 4],
    'transaction_datetime': ['2024-01-01 12:00:00', '2024-01-01 14:30:00', '2024-01-02 09:15:00', '2024-01-02 18:45:00']
}
df = pd.DataFrame(data)
df['transaction_datetime'] = pd.to_datetime(df['transaction_datetime'])
# 使用dt.date获取日期部分
df['transaction_date'] = df['transaction_datetime'].dt.date
print(df, end='\n\n')

# 258-3、时间序列分析
import pandas as pd
# 创建示例DataFrame
data = {
    'transaction_id': [1, 2, 3, 4],
    'transaction_datetime': ['2024-01-01 12:00:00', '2024-01-01 14:30:00', '2024-01-02 09:15:00', '2024-01-02 18:45:00'],
    'amount': [100, 200, 150, 300]
}
df = pd.DataFrame(data)
df['transaction_datetime'] = pd.to_datetime(df['transaction_datetime'])
# 使用dt.date获取日期部分
df['transaction_date'] = df['transaction_datetime'].dt.date
# 计算每一天的交易总额
daily_totals = df.groupby('transaction_date')['amount'].sum()
print(daily_totals, end='\n\n')

# 258-4、数据可视化
import pandas as pd
import matplotlib.pyplot as plt
# 创建示例DataFrame
data = {
    'transaction_id': [1, 2, 3, 4],
    'transaction_datetime': ['2024-01-01 12:00:00', '2024-01-01 14:30:00', '2024-01-02 09:15:00', '2024-01-02 18:45:00'],
    'amount': [100, 200, 150, 300]
}
df = pd.DataFrame(data)
df['transaction_datetime'] = pd.to_datetime(df['transaction_datetime'])
# 使用dt.date获取日期部分
df['transaction_date'] = df['transaction_datetime'].dt.date
# 计算每一天的交易总额
daily_totals = df.groupby('transaction_date')['amount'].sum()
# 绘制趋势图
daily_totals.plot(kind='line')
plt.xlabel('Date')
plt.ylabel('Total Amount')
plt.title('Daily Sales Trend')
plt.show()

# 258-5、数据合并与对齐
import pandas as pd
# 创建交易数据DataFrame
transaction_data = {
    'transaction_id': [1, 2, 3, 4],
    'transaction_datetime': ['2024-01-01 12:00:00', '2024-01-01 14:30:00', '2024-01-02 09:15:00', '2024-01-02 18:45:00'],
    'amount': [100, 200, 150, 300]
}
transaction_df = pd.DataFrame(transaction_data)
transaction_df['transaction_datetime'] = pd.to_datetime(transaction_df['transaction_datetime'])
transaction_df['transaction_date'] = transaction_df['transaction_datetime'].dt.date
# 创建库存数据DataFrame
inventory_data = {
    'inventory_date': ['2024-01-01', '2024-01-02'],
    'stock': [500, 400]
}
inventory_df = pd.DataFrame(inventory_data)
inventory_df['inventory_date'] = pd.to_datetime(inventory_df['inventory_date']).dt.date
# 按日期合并数据
merged_df = pd.merge(transaction_df, inventory_df, left_on='transaction_date', right_on='inventory_date')
print(merged_df)
258-6-3、结果输出
# 258、pandas.Series.dt.date属性
# 258-1、基本用法
# 0    2022-01-01
# 1    2023-01-02
# 2    2024-01-03
# dtype: object

# 258-2、数据清洗和预处理
#    transaction_id transaction_datetime transaction_date
# 0               1  2024-01-01 12:00:00       2024-01-01
# 1               2  2024-01-01 14:30:00       2024-01-01
# 2               3  2024-01-02 09:15:00       2024-01-02
# 3               4  2024-01-02 18:45:00       2024-01-02

# 258-3、时间序列分析
# transaction_date
# 2024-01-01    300
# 2024-01-02    450
# Name: amount, dtype: int64

# 258-4、数据可视化
# 见图1

# 258-5、数据合并与对齐
#    transaction_id transaction_datetime  ...  inventory_date stock
# 0               1  2024-01-01 12:00:00  ...      2024-01-01   500
# 1               2  2024-01-01 14:30:00  ...      2024-01-01   500
# 2               3  2024-01-02 09:15:00  ...      2024-01-02   400
# 3               4  2024-01-02 18:45:00  ...      2024-01-02   400
# 
# [4 rows x 6 columns]

图1:

259、pandas.Series.dt.time属性
259-1、语法
# 259、pandas.Series.dt.time属性
pandas.Series.dt.time
Returns numpy array of datetime.time objects.

The time part of the Timestamps.
259-2、参数

        无

259-3、功能

        用于从包含日期时间数据的Series中提取时间部分。

259-4、返回值

        返回一个新的Series,其中包含每个元素的时间部分,以datetime.time对象的形式表示,这意味着提取出来的时间部分包括时、分、秒,而不包括日期信息。

259-5、说明

        使用场景:

259-5-1、时间分析:如果你需要分析一天中的时间模式,例如确定一组活动发生在一天的哪个时段,dt.time可以将时间从日期中分离出来,便于进一步分析。

259-5-2、时间区间分类:在数据中,根据时间进行分类时,比如将时间分为“早晨”、“下午”和“晚上”,可以使用dt.time提取时间部分,然后应用分类规则。

259-5-3、时间比较:比如你想比较不同记录的时间是否在特定时间段内(如检查订单是否在工作时间内),dt.time提供了一种简单的方法来实现。

259-5-4、生成时间特征:在机器学习中,有时你需要将时间作为特征进行建模,dt.time可以帮助你生成用于训练模型的时间特征。

259-5-5、过滤数据:如果你需要从数据集中提取某个时间段的数据,例如过滤出只包含“上午9点到11点”的记录,可以先提取时间部分,然后应用条件筛选。

259-6、用法
259-6-1、数据准备
259-6-2、代码示例
# 259、pandas.Series.dt.time属性
# 259-1、时间分析
import pandas as pd
# 创建一个包含日期时间的Series
data = pd.Series(pd.to_datetime([
    '2024-08-04 08:30:00',
    '2024-08-04 13:15:00',
    '2024-08-04 19:45:00'
]))
# 提取时间部分
times = data.dt.time
print(times, end='\n\n')

# 259-2、时间区间分类
import pandas as pd
# 创建一个包含日期时间的Series
data = pd.Series(pd.to_datetime([
    '2024-08-04 08:30:00',
    '2024-08-04 13:15:00',
    '2024-08-04 19:45:00'
]))
# 提取时间部分
times = data.dt.time
# 分类规则函数
def categorize_time(t):
    if t < pd.to_datetime('12:00:00').time():
        return '早晨'
    elif t < pd.to_datetime('18:00:00').time():
        return '下午'
    else:
        return '晚上'
# 应用分类规则
categories = times.apply(categorize_time)
print(categories, end='\n\n')

# 259-3、时间比较
import pandas as pd
# 创建一个包含订单时间的Series
order_times = pd.Series(pd.to_datetime([
    '2024-08-04 09:30:00',
    '2024-08-04 15:00:00',
    '2024-08-04 20:00:00'
]))
# 提取时间部分
times = order_times.dt.time
# 定义工作时间区间
start_time = pd.to_datetime('09:00:00').time()
end_time = pd.to_datetime('18:00:00').time()
# 检查时间是否在工作时间内
in_working_hours = times.apply(lambda t: start_time <= t <= end_time)
print(in_working_hours, end='\n\n')

# 259-4、生成时间特征
import pandas as pd
# 创建一个包含日期时间的Series
data = pd.Series(pd.to_datetime([
    '2024-08-04 08:30:00',
    '2024-08-04 13:15:00',
    '2024-08-04 19:45:00'
]))
# 提取时间部分并转换为秒数特征
times = data.dt.time
time_features = pd.Series([(t.hour * 3600 + t.minute * 60 + t.second) for t in times])
print(time_features, end='\n\n')

# 259-5、过滤数据
import pandas as pd
# 创建一个包含日期时间的 Series
data = pd.Series(pd.to_datetime([
    '2024-08-04 08:30:00',
    '2024-08-04 09:45:00',
    '2024-08-04 10:30:00',
    '2024-08-04 11:15:00',
    '2024-08-04 12:00:00'
]))
# 提取时间部分
times = data.dt.time
# 定义时间段
start_time = pd.to_datetime('09:00:00').time()
end_time = pd.to_datetime('11:00:00').time()
# 过滤时间段内的数据
filtered_data = data[times.apply(lambda t: start_time <= t <= end_time)]
print(filtered_data)
259-6-3、结果输出
# 259、pandas.Series.dt.time属性
# 259-1、时间分析
# 0    08:30:00
# 1    13:15:00
# 2    19:45:00
# dtype: object

# 259-2、时间区间分类
# 0    早晨
# 1    下午
# 2    晚上
# dtype: object

# 259-3、时间比较
# 0     True
# 1     True
# 2    False
# dtype: bool

# 259-4、生成时间特征
# 0    30600
# 1    47700
# 2    71100
# dtype: int64

# 259-5、过滤数据
# 1   2024-08-04 09:45:00
# 2   2024-08-04 10:30:00
# dtype: datetime64[ns]
260、pandas.Series.dt.timetz属性
260-1、语法
# 260、pandas.Series.dt.timetz属性
pandas.Series.dt.timetz
Returns numpy array of datetime.time objects with timezones.

The time part of the Timestamps.
260-2、参数

        无

260-3、功能

        允许你从datetime类型的Series中提取时间部分,并保留时区信息,这意味着你可以获取带有时区的时间部分,而忽略日期部分。

260-4、返回值

        返回的是一个DatetimeIndex对象,其中每个时间部分都是一个datetime.time对象,带有时区信息。

260-5、说明

        使用场景:

260-5-1、时区敏感的时间数据提取:当你需要从带有时区的日期时间数据中提取时间部分,并保持时区信息时,timetz属性非常有用。例如,在全球业务中,你可能需要在不同的时区之间进行时间比较或调度任务。

260-5-2、时间格式化与展示:提取时间部分并保留时区信息后,可以用于格式化和展示。例如,在用户界面上显示带有时区的时间,以确保用户看到的是他们所在时区的时间。

260-5-3、时间区间检查:用于检查某一时间是否在特定的工作时间区间内。例如,分析订单是否在工作时间内,或者根据时间数据筛选符合条件的记录。

260-5-4、时区转换后的时间提取:将时间数据从一个时区转换到另一个时区,并提取带时区的时间部分,这对于需要对全球用户的活动进行分析的应用场景非常有帮助。

260-5-5、时间与日期分离:有时你可能只对时间部分感兴趣,而日期部分无关紧要,timetz允许你从日期时间中提取时间部分,而忽略日期信息,便于进行进一步的分析或处理。

260-6、用法
260-6-1、数据准备
260-6-2、代码示例
# 260、pandas.Series.dt.timetz属性
# 260-1、检查用户活动时间是否在工作时间内
import pandas as pd
# 创建一个包含用户活动时间的Series
activity_times = pd.Series(pd.to_datetime([
    '2024-08-04 10:30:00',
    '2024-08-04 15:45:00',
    '2024-08-04 22:00:00'
]))
# 设置时区为UTC
activity_times = activity_times.dt.tz_localize('UTC')
# 转换到本地时区(例如 'Asia/Shanghai')
activity_times_local = activity_times.dt.tz_convert('Asia/Shanghai')
# 提取带时区的时间部分
times_with_tz = activity_times_local.dt.timetz
# 定义工作时间区间
work_start_time = pd.to_datetime('09:00:00').time()
work_end_time = pd.to_datetime('18:00:00').time()
# 检查是否在工作时间内
is_working_hour = times_with_tz.apply(lambda t: work_start_time <= t <= work_end_time)
print(is_working_hour, end='\n\n')

# 260-2、时区转换后的时间提取
import pandas as pd
# 创建一个包含日期时间的Series
dates = pd.Series(pd.to_datetime([
    '2024-08-04 06:00:00',
    '2024-08-04 12:00:00',
    '2024-08-04 18:00:00'
]))
# 设置时区为UTC
dates_utc = dates.dt.tz_localize('UTC')
# 转换到另一个时区(例如 'Europe/Berlin')
dates_berlin = dates_utc.dt.tz_convert('Europe/Berlin')
# 提取带时区的时间部分
times_with_tz = dates_berlin.dt.timetz
print(times_with_tz, end='\n\n')

# 260-3、时间数据提取与展示
import pandas as pd
# 创建一个包含日期时间的Series
dates = pd.Series(pd.to_datetime([
    '2024-08-04 01:00:00',
    '2024-08-04 10:00:00',
    '2024-08-04 15:00:00'
]))
# 设置时区为UTC
dates_utc = dates.dt.tz_localize('UTC')
# 转换到本地时区(例如 'America/New_York')
dates_ny = dates_utc.dt.tz_convert('America/New_York')
# 提取带时区的时间部分
times_with_tz = dates_ny.dt.timetz
# 打印结果
print("Times with timezone information:")
print(times_with_tz, end='\n\n')

# 260-4、时间区间检查
import pandas as pd
# 创建一个包含时间数据的Series
times = pd.Series(pd.to_datetime([
    '2024-08-04 07:30:00',
    '2024-08-04 12:00:00',
    '2024-08-04 19:30:00'
]))
# 设置时区为UTC
times_utc = times.dt.tz_localize('UTC')
# 转换到本地时区(例如 'Asia/Tokyo')
times_tokyo = times_utc.dt.tz_convert('Asia/Tokyo')
# 提取带时区的时间部分
times_with_tz = times_tokyo.dt.timetz
# 定义检查时间区间
check_start_time = pd.to_datetime('10:00:00').time()
check_end_time = pd.to_datetime('18:00:00').time()
# 检查是否在指定时间区间内
is_in_interval = times_with_tz.apply(lambda t: check_start_time <= t <= check_end_time)
print(is_in_interval, end='\n\n')

# 260-5、与指定时间点比较
import pandas as pd
# 创建一个包含日期时间的Series
dates = pd.Series(pd.to_datetime([
    '2024-08-04 04:30:00',
    '2024-08-04 09:15:00',
    '2024-08-04 14:45:00'
]))
# 设置时区为UTC
dates_utc = dates.dt.tz_localize('UTC')
# 转换到本地时区(例如 'Australia/Sydney')
dates_sydney = dates_utc.dt.tz_convert('Australia/Sydney')
# 提取带时区的时间部分
times_with_tz = dates_sydney.dt.timetz
# 定义参考时间点
reference_time = pd.to_datetime('12:00:00').time()
# 检查时间是否在参考时间点之前
is_before_reference = times_with_tz.apply(lambda t: t < reference_time)
print(is_before_reference, end='\n\n')

# 260-6、计算时间间隔
import pandas as pd
# 创建一个包含日期时间的Series
dates = pd.Series(pd.to_datetime([
    '2024-08-04 08:00:00',
    '2024-08-04 12:00:00',
    '2024-08-04 16:00:00'
]))
# 设置时区为UTC
dates_utc = dates.dt.tz_localize('UTC')
# 转换到本地时区(例如 'America/Los_Angeles')
dates_la = dates_utc.dt.tz_convert('America/Los_Angeles')
# 提取带时区的时间部分
times_with_tz = dates_la.dt.timetz
# 计算与第一个时间的间隔(按秒计算)
first_time = times_with_tz.iloc[0]
time_intervals = times_with_tz.apply(lambda t: (pd.Timestamp.combine(pd.Timestamp.now().date(), t) - pd.Timestamp.combine(pd.Timestamp.now().date(), first_time)).total_seconds())
print(time_intervals, end='\n\n')

# 260-7、显示时间的小时和分钟
import pandas as pd
# 创建一个包含日期时间的Series
dates = pd.Series(pd.to_datetime([
    '2024-08-04 03:30:00',
    '2024-08-04 07:45:00',
    '2024-08-04 14:15:00'
]))
# 设置时区为UTC
dates_utc = dates.dt.tz_localize('UTC')
# 转换到本地时区(例如 'Asia/Seoul')
dates_seoul = dates_utc.dt.tz_convert('Asia/Seoul')
# 提取带时区的时间部分
times_with_tz = dates_seoul.dt.timetz
# 显示时间的小时和分钟部分
hours_minutes = times_with_tz.apply(lambda t: f"{t.hour:02}:{t.minute:02}")
print(hours_minutes)
260-6-3、结果输出
# 260、pandas.Series.dt.timetz属性
# 260-1、检查用户活动时间是否在工作时间内
# 0    False
# 1    False
# 2    False
# dtype: bool

# 260-2、时区转换后的时间提取
# 0    08:00:00
# 1    14:00:00
# 2    20:00:00
# dtype: object

# 260-3、时间数据提取与展示
# Times with timezone information:
# 0    21:00:00
# 1    06:00:00
# 2    11:00:00
# dtype: object

# 260-4、时间区间检查
# 0     True
# 1    False
# 2    False
# dtype: bool

# 260-5、与指定时间点比较
# 0    False
# 1    False
# 2     True
# dtype: bool

# 260-6、计算时间间隔
# 0        0.0
# 1    14400.0
# 2    28800.0
# dtype: float64

# 260-7、显示时间的小时和分钟
# 0    12:30
# 1    16:45
# 2    23:15
# dtype: object

二、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享一个基于人脸识别的小区物业管理系统Spring Boot(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

我花了一天时间,搭了个专属知识库,部署上线了,手把手教,不信你学不会

自动开了这个号以后&#xff0c;陆陆续续写了很多干货文章&#xff0c;一方面是可以帮助自己梳理思路&#xff0c;另一方面也方便日后查找相关内容。 但是&#xff0c;我想检索某个关键词是在之前哪篇文章写过的&#xff0c;就有点捉急了。CSDN 还好&#xff0c;可以检索到相关…

Python 算法交易实验77 QTV200日常推进-经典策略

说明 最初(去年7月)快快上了一版&#xff0c;到现在差不多正好一年。总体上当时做的还是蛮粗糙的&#xff0c;没有考虑模式&#xff0c;只是简单的用判别模型做了一道。 过去的一年&#xff0c;显然不是特别好的一年。我知道的大部分还是以亏损居多。这版策略竟然没有亏钱&am…

【C++11】:lambda表达式function包装器

目录 前言一&#xff0c;可变参数模板1.1 简单认识1.2 STL容器中的empalce系列相关接口 二&#xff0c;lambda表达式2.1 lambda表达式语法2.2 探索lambda底层 三&#xff0c;包装器3.1 function包装器3.2 bind 四&#xff0c;类的新功能4.1 默认成员函数4.2 关键字default4.3 关…

c++数据保存到.csv文件中,并用opencv离线仿真显示

测试可能不是很方便&#xff0c;希望采集一次数据后期还可以使用&#xff0c;这里提供一个案例&#xff1a; 数据写入fosepose.csv //write.cpp #include <iostream> #include <fstream> #include <iomanip> #include <cstdint> #include <chrono…

达梦数据库的系统视图v$sql_plan

达梦数据库的系统视图v$sql_plan 达梦数据库的V$SQL_PLAN视图主要用于显示缓存中的SQL执行计划信息&#xff0c;在 ini 参数 USE_PLN_POOL !0 时才统计。通过查询这个视图&#xff0c;用户可以获取到缓存中的SQL语句的执行计划&#xff0c;这对于监控和分析数据库中的SQL执行情…

excel去掉小数点前的内容

可以使用"通配符"法 1、去除小数点后的内容 我们按CTRLH&#xff0c;调出查找替换功能 然后在查找内容里面&#xff0c;输入.* 星号是通配符&#xff0c;一点加通配符&#xff0c;表示将小数点后面的任意字符给去掉 2、去除小数点前的内容 我们按CTRLH&#xff0c;调…

Python处理和生成 Word 文档库之python-docx使用详解

概要 在日常工作中,处理和生成 Word 文档是一个常见的需求。Python 提供了一个强大的库 python-docx,使得操作 Word 文档变得简单和高效。python-docx 可以帮助我们创建、修改和读取 Word 文档,适用于各种应用场景,如自动化报告生成、批量文档处理等。本文将详细介绍 pyth…

Spring AOP:面向切面编程的最佳实践 ( 一 )

1.AOP思想 1.1.为什么需要面向切面编程 如果在一个类或者多个类的多个业务逻辑方法中, 在开始,结尾部分包含功能相同的代码称之为横切关注点也叫切面, 这种结构可能符合传统的面向对象编程&#xff08;OOP&#xff09;的封装特性, 但可能导致代码难以维护和扩展。 面向切面编…

Python 如何进行自然语言处理(NLTK, SpaCy)

自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是计算机科学和人工智能的一个重要领域&#xff0c;旨在实现计算机对人类语言的理解和处理。在Python中&#xff0c;有许多工具和库可以用于自然语言处理&#xff0c;其中最流行的两个是NLTK&#xff08;…

【Python脚本】定时任务脚本实现、自动关机等功能脚本实现(保姆篇)

文章目录 功能描述源码分析依赖参数配置数据校验多线程并发执行定时任务注册自动关机主程序 源码整合本篇小结 更多相关内容可查看 功能描述 需要python环境&#xff0c;详情可看主页python相关文章【Python】从0开始写脚本、Selenium详细教程、附源码案例&#xff08;保姆篇&…

3dsMax模型展开UV之后无法删除,3dsmax删除模型上已经展开的UV

3dsmax展开UV之后如何删除UV 方法二 如果不能重置UV通道&#xff0c;在实用工具》更多工具》UVW移除&#xff0c;选中模型&#xff0c;点击UVW移除&#xff0c;移除模型的UVW。

机器人抓取与操作的挑战与进展——挑战赛角度

从竞赛中看机器人抓取与操作的挑战与进展 前言一、国际机器人竞赛有哪些&#xff1f;二、感知方面的挑战与进展二、抓取方面的挑战与进展三、操作方面的挑战与进展总结 前言 本文根据最近的机器人抓取和操作挑战赛 (Robotic Grasping andManipulation Competitions (RGMCs))&a…

OCR图片矫正、表格检测及裁剪综合实践

问题描述 实际工程中&#xff0c;我们经常需要对图片进行预处理&#xff0c;比如&#xff1a; 1、图片是倾斜的 2、图片背景需要处理掉 3、图片的公章需要剔除 4、图片过暗&#xff0c;过亮 5、图片表格检测 6、图片表格版面分析 。。。。。。等等各种情况。 结果展示…

解决PuppeteerSharp生成PDF颜色问题的最佳实践

在现代网络开发中&#xff0c;使用爬虫技术生成PDF文件已成为一种常见需求。然而&#xff0c;开发者经常会遇到一些棘手的问题&#xff0c;其中之一便是使用PuppeteerSharp生成PDF时颜色丢失的问题。本篇文章将概述如何解决这一问题&#xff0c;并提供最佳实践和相关代码示例。…

TI音频功放TAS6511(二)

3.数字音频处理 芯片支持高级数字音频处理能力&#xff0c;包括&#xff1a; 高通滤波器/直流阻断 数字音量控制 PVDD的Foldback/AGL 热Foldback 双象限增益补偿 混合调制 实时负载诊断 低延迟路径 喇叭功率限制 1&#xff09;PVDD Foldback 本功能主要为了防止音频…

学习笔记--算法(双指针)2

复写零 链接&#xff1a;https://leetcode.cn/problems/duplicate-zeros/ 题目 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的…

分享一个基于微信小程序的旅游自助拼团系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…

想业余时间做个网赚项目,有啥捷径?

前两年我陷入一段迷茫、浮躁、焦虑期。 主要原因是&#xff0c;心很大&#xff0c;力不足。 总想着找到一个高利润、高复购、少竞争的“蓝海”产品。 于是就面临一个尴尬的境地&#xff1a;普通业务看不上&#xff0c;蓝海业务找不着。 而且总想着做推广一步登天&#xff0…

程序员日志之DNF手游女鬼剑前瞻

目录 传送门正文日志1、概要女鬼剑 传送门 SpringMVC的源码解析&#xff08;精品&#xff09; Spring6的源码解析&#xff08;精品&#xff09; SpringBoot3框架&#xff08;精品&#xff09; MyBatis框架&#xff08;精品&#xff09; MyBatis-Plus SpringDataJPA SpringClou…