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

news2024/10/1 1:27:04

目录

一、用法精讲

291、pandas.Series.dt.round函数

291-1、语法

291-2、参数

291-3、功能

291-4、返回值

291-5、说明

291-6、用法

291-6-1、数据准备

291-6-2、代码示例

291-6-3、结果输出

292、pandas.Series.dt.floor函数

292-1、语法

292-2、参数

292-3、功能

292-4、返回值

292-5、说明

292-6、用法

292-6-1、数据准备

292-6-2、代码示例

292-6-3、结果输出

293、pandas.Series.dt.ceil函数

293-1、语法

293-2、参数

293-3、功能

293-4、返回值

293-5、说明

293-6、用法

293-6-1、数据准备

293-6-2、代码示例

293-6-3、结果输出

294、pandas.Series.dt.month_name方法

294-1、语法

294-2、参数

294-3、功能

294-4、返回值

294-5、说明

294-6、用法

294-6-1、数据准备

294-6-2、代码示例

294-6-3、结果输出

295、pandas.Series.dt.day_name方法

295-1、语法

295-2、参数

295-3、功能

295-4、返回值

295-5、说明

295-6、用法

295-6-1、数据准备

295-6-2、代码示例

295-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、用法精讲

291、pandas.Series.dt.round函数
291-1、语法
# 291、pandas.Series.dt.round函数
pandas.Series.dt.round(*args, **kwargs)
Perform round operation on the data to the specified freq.

Parameters:
freq
str or Offset
The frequency level to round the index to. Must be a fixed frequency like ‘S’ (second) not ‘ME’ (month end). See frequency aliases for a list of possible freq values.

ambiguous
‘infer’, bool-ndarray, ‘NaT’, default ‘raise’
Only relevant for DatetimeIndex:

‘infer’ will attempt to infer fall dst-transition hours based on order

bool-ndarray where True signifies a DST time, False designates a non-DST time (note that this flag is only applicable for ambiguous times)

‘NaT’ will return NaT where there are ambiguous times

‘raise’ will raise an AmbiguousTimeError if there are ambiguous times.

nonexistent
‘shift_forward’, ‘shift_backward’, ‘NaT’, timedelta, default ‘raise’
A nonexistent time does not exist in a particular timezone where clocks moved forward due to DST.

‘shift_forward’ will shift the nonexistent time forward to the closest existing time

‘shift_backward’ will shift the nonexistent time backward to the closest existing time

‘NaT’ will return NaT where there are nonexistent times

timedelta objects will shift nonexistent times by the timedelta

‘raise’ will raise an NonExistentTimeError if there are nonexistent times.

Returns:
DatetimeIndex, TimedeltaIndex, or Series
Index of the same type for a DatetimeIndex or TimedeltaIndex, or a Series with the same index for a Series.

Raises:
ValueError if the
freq
cannot be converted.
Notes

If the timestamps have a timezone, rounding will take place relative to the local (“wall”) time and re-localized to the same timezone. When rounding near daylight savings time, use nonexistent and ambiguous to control the re-localization behavior.
291-2、参数

291-2-1、freq(必须)str or DateOffset,指定要四舍五入到的时间频率,常见的频率字符串包括:

  • s:
  • min:分钟
  • h:小时
  • D:
  • W:
  • M:
  • Q:季度
  • A:

291-2-2、ambiguous(可选,默认值为'raise')用于处理夏令时转换时的模棱两可的时间。默认情况下,如果时间不明确,会引发错误。可以选择以下选项之一:

  • 'raise':如果遇到不明确的时间,则引发错误。
  • 'NaT':将不明确的时间设置为NaT。
  • bool array:具有与时间戳相同长度的布尔数组,指示每个时间戳是否为夏令时。

291-2-3、nonexistent(可选,默认值为'raise')用于处理不存在的时间,例如从夏令时到标准时间的转换。默认情况下,如果时间不存在,会引发错误。可以选择以下选项之一:

  • 'raise':如果遇到不存在的时间,则引发错误。
  • 'NaT':将不存在的时间设置为NaT。
  • timedelta:使用给定的时间差调整不存在的时间。
291-3、功能

        用于将datetime数据四舍五入到最近的指定频率。例如,可以将datetime数据四舍五入到最近的秒、分钟、小时等,这对于需要标准化时间戳数据或进行时间间隔计算时非常有用。

291-4、返回值

        返回一个新的Series,其中包含四舍五入到指定频率的datetime数据。

291-5、说明

        使用场景:

291-5-1、数据标准化和对齐:在处理时间序列数据时,经常需要将时间戳对齐到统一的频率,以便进行进一步的分析和处理。例如,将不同时间戳对齐到最近的整点、整分或整秒,以便对不同时间序列进行比较或合并。

291-5-2、处理高频数据:在金融数据分析中,经常会处理高频交易数据,为了简化分析过程,可以将这些高频数据(如毫秒级别的交易数据)四舍五入到秒、分钟或小时级别,以便于观察趋势和模式。

291-5-3、生成时间窗口:在生成固定长度的时间窗口时,可以使用该方法将时间戳四舍五入到最近的窗口边界。例如,在生成按分钟分组的窗口时,可以将时间戳四舍五入到最近的分钟。

291-5-4、数据清理和预处理:在数据清理过程中,经常需要处理不精确的时间戳数据,通过将时间戳四舍五入到最近的标准时间,可以消除小的误差,使数据更加整洁和一致。

291-5-5、数据聚合:在对时间序列数据进行聚合操作(如计算平均值、总和等)之前,通常需要将时间戳对齐到同一频率。例如,在按小时聚合数据时,可以先将时间戳四舍五入到最近的小时。

291-6、用法
291-6-1、数据准备
291-6-2、代码示例
# 291、pandas.Series.dt.round方法
# 291-1、天气数据分析
import pandas as pd
# 创建示例天气数据
weather_data = pd.DataFrame({
    'timestamp': pd.to_datetime([
        '2024-08-07 14:35:29', '2024-08-07 14:35:45', '2024-08-07 14:36:12'
    ]),
    'temperature': [25.3, 25.5, 25.7]
})
# 将时间戳四舍五入到最近的分钟
weather_data['rounded_timestamp'] = weather_data['timestamp'].dt.round('min')
# 按照四舍五入后的时间戳计算每分钟的平均温度
average_temperature_per_minute = weather_data.groupby('rounded_timestamp')['temperature'].mean().reset_index()
print("每分钟的平均温度:")
print(average_temperature_per_minute, end='\n\n')

# 291-2、交通流量分析
import pandas as pd
# 创建示例交通流量数据
traffic_data = pd.DataFrame({
    'timestamp': pd.to_datetime([
        '2024-08-07 08:15:12', '2024-08-07 08:16:45', '2024-08-07 08:17:59'
    ]),
    'vehicle_count': [15, 20, 25]
})
# 将时间戳四舍五入到最近的小时
traffic_data['rounded_timestamp'] = traffic_data['timestamp'].dt.round('h')
# 按照四舍五入后的时间戳计算每小时的车流量总数
vehicle_count_per_hour = traffic_data.groupby('rounded_timestamp')['vehicle_count'].sum().reset_index()
print("每小时的车流量总数:")
print(vehicle_count_per_hour, end='\n\n')

# 291-3、股票交易数据分析
import pandas as pd
# 创建示例股票交易数据
trade_data = pd.DataFrame({
    'timestamp': pd.to_datetime([
        '2024-08-07 09:00:01.123', '2024-08-07 09:00:02.456', '2024-08-07 09:00:03.789'
    ]),
    'trade_amount': [1000, 1500, 2000]
})
# 将时间戳四舍五入到最近的秒
trade_data['rounded_timestamp'] = trade_data['timestamp'].dt.round('s')
# 按照四舍五入后的时间戳计算每秒的交易总金额
trade_amount_per_second = trade_data.groupby('rounded_timestamp')['trade_amount'].sum().reset_index()
print("每秒的交易总金额:")
print(trade_amount_per_second, end='\n\n')

# 291-4、制造业生产数据分析
import pandas as pd
# 创建示例制造业生产数据
production_data = pd.DataFrame({
    'timestamp': pd.to_datetime([
        '2024-08-07 10:12:34', '2024-08-07 10:45:21', '2024-08-07 11:02:45'
    ]),
    'quantity': [100, 200, 150]
})
# 将时间戳四舍五入到最近的小时
production_data['rounded_timestamp'] = production_data['timestamp'].dt.round('h')
# 按照四舍五入后的时间戳计算每小时的生产数量
quantity_per_hour = production_data.groupby('rounded_timestamp')['quantity'].sum().reset_index()
print("每小时的生产数量:")
print(quantity_per_hour, end='\n\n')

# 291-5、网站访问数据分析
import pandas as pd
# 创建示例网站访问数据
visit_data = pd.DataFrame({
    'timestamp': pd.to_datetime([
        '2024-08-07 15:03:45', '2024-08-07 15:04:15', '2024-08-07 15:04:35'
    ]),
    'user_id': [101, 102, 103]
})
# 将时间戳四舍五入到最近的分钟
visit_data['rounded_timestamp'] = visit_data['timestamp'].dt.round('min')
# 按照四舍五入后的时间戳计算每分钟的访问量
visit_count_per_minute = visit_data.groupby('rounded_timestamp')['user_id'].count().reset_index()
print("每分钟的访问量:")
print(visit_count_per_minute, end='\n\n')

# 291-6、电力消耗数据分析
import pandas as pd
# 创建示例电力消耗数据
power_consumption_data = pd.DataFrame({
    'timestamp': pd.to_datetime([
        '2024-08-07 01:45:00', '2024-08-07 13:30:00', '2024-08-08 02:15:00'
    ]),
    'power_consumption': [120, 150, 130]
})
# 将时间戳四舍五入到最近的一天
power_consumption_data['rounded_timestamp'] = power_consumption_data['timestamp'].dt.round('D')
# 按照四舍五入后的时间戳计算每天的电力消耗总量
daily_power_consumption = power_consumption_data.groupby('rounded_timestamp')['power_consumption'].sum().reset_index()
print("每天的电力消耗总量:")
print(daily_power_consumption)
291-6-3、结果输出
# 291、pandas.Series.dt.round方法
# 291-1、天气数据分析
# 每分钟的平均温度:
#     rounded_timestamp  temperature
# 0 2024-08-07 14:35:00         25.3
# 1 2024-08-07 14:36:00         25.6

# 291-2、交通流量分析
# 每小时的车流量总数:
#     rounded_timestamp  vehicle_count
# 0 2024-08-07 08:00:00             60

# 291-3、股票交易数据分析
# 每秒的交易总金额:
#     rounded_timestamp  trade_amount
# 0 2024-08-07 09:00:01          1000
# 1 2024-08-07 09:00:02          1500
# 2 2024-08-07 09:00:04          2000

# 291-4、制造业生产数据分析
# 每小时的生产数量:
#     rounded_timestamp  quantity
# 0 2024-08-07 10:00:00       100
# 1 2024-08-07 11:00:00       350

# 291-5、网站访问数据分析
# 每分钟的访问量:
#     rounded_timestamp  user_id
# 0 2024-08-07 15:04:00        2
# 1 2024-08-07 15:05:00        1

# 291-6、电力消耗数据分析
# 每天的电力消耗总量:
#   rounded_timestamp  power_consumption
# 0        2024-08-07                120
# 1        2024-08-08                280
292、pandas.Series.dt.floor函数
292-1、语法
# 292、pandas.Series.dt.floor函数
pandas.Series.dt.floor(*args, **kwargs)
Perform floor operation on the data to the specified freq.

Parameters:
freq
str or Offset
The frequency level to floor the index to. Must be a fixed frequency like ‘S’ (second) not ‘ME’ (month end). See frequency aliases for a list of possible freq values.

ambiguous
‘infer’, bool-ndarray, ‘NaT’, default ‘raise’
Only relevant for DatetimeIndex:

‘infer’ will attempt to infer fall dst-transition hours based on order

bool-ndarray where True signifies a DST time, False designates a non-DST time (note that this flag is only applicable for ambiguous times)

‘NaT’ will return NaT where there are ambiguous times

‘raise’ will raise an AmbiguousTimeError if there are ambiguous times.

nonexistent
‘shift_forward’, ‘shift_backward’, ‘NaT’, timedelta, default ‘raise’
A nonexistent time does not exist in a particular timezone where clocks moved forward due to DST.

‘shift_forward’ will shift the nonexistent time forward to the closest existing time

‘shift_backward’ will shift the nonexistent time backward to the closest existing time

‘NaT’ will return NaT where there are nonexistent times

timedelta objects will shift nonexistent times by the timedelta

‘raise’ will raise an NonExistentTimeError if there are nonexistent times.

Returns:
DatetimeIndex, TimedeltaIndex, or Series
Index of the same type for a DatetimeIndex or TimedeltaIndex, or a Series with the same index for a Series.

Raises:
ValueError if the
freq
cannot be converted.
Notes

If the timestamps have a timezone, flooring will take place relative to the local (“wall”) time and re-localized to the same timezone. When flooring near daylight savings time, use nonexistent and ambiguous to control the re-localization behavior.
292-2、参数

292-2-1、freq(必须)str or DateOffset,指定要四舍五入到的时间频率,常见的频率字符串包括:

  • s:
  • min:分钟
  • h:小时
  • D:
  • W:
  • M:
  • Q:季度
  • A:

292-2-2、ambiguous(可选,默认值为'raise')用于处理夏令时转换时的模棱两可的时间。默认情况下,如果时间不明确,会引发错误。可以选择以下选项之一:

  • 'raise':如果遇到不明确的时间,则引发错误。
  • 'NaT':将不明确的时间设置为NaT。
  • bool array:具有与时间戳相同长度的布尔数组,指示每个时间戳是否为夏令时。

292-2-3、nonexistent(可选,默认值为'raise')用于处理不存在的时间,例如从夏令时到标准时间的转换。默认情况下,如果时间不存在,会引发错误。可以选择以下选项之一:

  • 'raise':如果遇到不存在的时间,则引发错误。
  • 'NaT':将不存在的时间设置为NaT。
  • timedelta:使用给定的时间差调整不存在的时间。
292-3、功能

        将每个时间戳向下取整到指定的时间频率。例如,如果我们有一系列时间戳,并希望将它们对齐到最近的小时,我们可以使用floor('h')。

292-4、返回值

        返回一个新的pandas.Series对象,其中的每个时间戳都被向下取整到指定频率,原始的Series对象不会被修改。

292-5、说明

        使用场景:

292-5-1、时间对齐:在进行时间序列分析时,数据可能来自不同的源,并且时间戳不完全一致,使用floor方法可以将这些时间戳对齐到统一的时间间隔,从而简化数据的合并和比较。

292-5-2、数据聚合:当需要对时间序列数据进行聚合分析时,如按小时、天、周等频率计算平均值或总和,floor方法可以帮助将时间戳对齐到这些频率,之后可以使用groupby和聚合函数进行分析。

292-5-3、异常值处理:在处理时间序列数据时,可能会遇到一些不规则的时间戳,使用floor方法可以将这些不规则的时间戳对齐到标准的时间间隔,便于后续的异常值处理。

292-5-4、缺失值填充:通过将时间序列对齐到固定的时间间隔,可以方便地识别和填充缺失值。例如,可以使用reindex方法创建一个完整的时间索引,然后填充缺失的数据。

292-5-5、滚动窗口计算:在时间序列分析中,经常需要计算滚动窗口统计量(如滚动平均值),floor方法可以帮助将时间对齐,从而简化滚动窗口计算的过程。

292-5-6、实时数据流处理:在处理实时数据流时,经常需要将数据按固定的时间间隔进行处理,floor方法可以帮助将实时数据对齐到固定的时间窗口,从而简化实时数据的处理逻辑。

292-6、用法
292-6-1、数据准备
292-6-2、代码示例
# 292、pandas.Series.dt.floor函数
# 292-1、时间对齐
import pandas as pd
# 示例数据
timestamps = pd.Series(pd.to_datetime(['2024-08-07 10:15:30', '2024-08-07 10:45:15', '2024-08-07 11:05:45']))
floored_hours = timestamps.dt.floor('h')
print(floored_hours, end='\n\n')

# 292-2、数据聚合
import pandas as pd
# 示例数据
data = {
    'timestamp': pd.to_datetime(['2024-08-07 10:15:30', '2024-08-07 10:45:15', '2024-08-07 11:05:45']),
    'value': [10, 20, 30]
}
df = pd.DataFrame(data)
df['floored_hour'] = df['timestamp'].dt.floor('h')
aggregated = df.groupby('floored_hour')['value'].sum()
print(aggregated, end='\n\n')

# 292-3、异常值处理
import pandas as pd
# 示例数据
timestamps = pd.Series(pd.to_datetime(['2024-08-07 10:15:30', '2024-08-07 10:45:15', '2024-08-07 11:05:45']))
floored_minutes = timestamps.dt.floor('min')
print(floored_minutes, end='\n\n')

# 292-4、缺失值填充
import pandas as pd
# 示例数据
timestamps = pd.date_range('2024-08-07 10:00:00', periods=3, freq='h')
values = [10, None, 30]
df = pd.DataFrame({'timestamp': timestamps, 'value': values})
df.set_index('timestamp', inplace=True)
df = df.reindex(pd.date_range('2024-08-07 10:00:00', '2024-08-07 12:00:00', freq='h'))
df['value'].fillna(method='ffill', inplace=True)
print(df, end='\n\n')

# 292-5、滚动窗口计算
import pandas as pd
# 示例数据
data = pd.Series([10, 20, 30], index=pd.to_datetime(['2024-08-07 10:15:30', '2024-08-07 10:45:15', '2024-08-07 11:05:45']))
floored_data = data.groupby(data.index.floor('h')).sum()
rolling_mean = floored_data.rolling(window=2).mean()
print(rolling_mean, end='\n\n')

# 292-6、实时数据流处理
import pandas as pd
import numpy as np
# 模拟实时数据流
timestamps = pd.Series(pd.to_datetime(['2024-08-07 10:15:30', '2024-08-07 10:45:15', '2024-08-07 11:05:45']))
values = pd.Series(np.random.randn(len(timestamps)))
# 对齐到最近的分钟
floored_minutes = timestamps.dt.floor('min')
real_time_df = pd.DataFrame({'timestamp': floored_minutes, 'value': values})
print(real_time_df)
292-6-3、结果输出
# 292、pandas.Series.dt.floor函数
# 292-1、时间对齐
# 0   2024-08-07 10:00:00
# 1   2024-08-07 10:00:00
# 2   2024-08-07 11:00:00
# dtype: datetime64[ns]

# 292-2、数据聚合
# floored_hour
# 2024-08-07 10:00:00    30
# 2024-08-07 11:00:00    30
# Name: value, dtype: int64

# 292-3、异常值处理
# 0   2024-08-07 10:15:00
# 1   2024-08-07 10:45:00
# 2   2024-08-07 11:05:00
# dtype: datetime64[ns]

# 292-4、缺失值填充
#                      value
# 2024-08-07 10:00:00   10.0
# 2024-08-07 11:00:00   10.0
# 2024-08-07 12:00:00   30.0

# 292-5、滚动窗口计算
# 2024-08-07 10:00:00     NaN
# 2024-08-07 11:00:00    30.0
# dtype: float64

# 292-6、实时数据流处理
#             timestamp     value
# 0 2024-08-07 10:15:00 -1.294484
# 1 2024-08-07 10:45:00 -1.846297
# 2 2024-08-07 11:05:00 -2.314171
293、pandas.Series.dt.ceil函数
293-1、语法
# 293、pandas.Series.dt.ceil函数
pandas.Series.dt.ceil(*args, **kwargs)
Perform ceil operation on the data to the specified freq.

Parameters:
freq
str or Offset
The frequency level to ceil the index to. Must be a fixed frequency like ‘S’ (second) not ‘ME’ (month end). See frequency aliases for a list of possible freq values.

ambiguous
‘infer’, bool-ndarray, ‘NaT’, default ‘raise’
Only relevant for DatetimeIndex:

‘infer’ will attempt to infer fall dst-transition hours based on order

bool-ndarray where True signifies a DST time, False designates a non-DST time (note that this flag is only applicable for ambiguous times)

‘NaT’ will return NaT where there are ambiguous times

‘raise’ will raise an AmbiguousTimeError if there are ambiguous times.

nonexistent
‘shift_forward’, ‘shift_backward’, ‘NaT’, timedelta, default ‘raise’
A nonexistent time does not exist in a particular timezone where clocks moved forward due to DST.

‘shift_forward’ will shift the nonexistent time forward to the closest existing time

‘shift_backward’ will shift the nonexistent time backward to the closest existing time

‘NaT’ will return NaT where there are nonexistent times

timedelta objects will shift nonexistent times by the timedelta

‘raise’ will raise an NonExistentTimeError if there are nonexistent times.

Returns:
DatetimeIndex, TimedeltaIndex, or Series
Index of the same type for a DatetimeIndex or TimedeltaIndex, or a Series with the same index for a Series.

Raises:
ValueError if the
freq
cannot be converted.
Notes

If the timestamps have a timezone, ceiling will take place relative to the local (“wall”) time and re-localized to the same timezone. When ceiling near daylight savings time, use nonexistent and ambiguous to control the re-localization behavior.
293-2、参数

293-2-1、freq(必须)str or DateOffset,指定要四舍五入到的时间频率,常见的频率字符串包括:

  • s:
  • min:分钟
  • h:小时
  • D:
  • W:
  • M:
  • Q:季度
  • A:

293-2-2、ambiguous(可选,默认值为'raise')用于处理夏令时转换时的模棱两可的时间。默认情况下,如果时间不明确,会引发错误。可以选择以下选项之一:

  • 'raise':如果遇到不明确的时间,则引发错误。
  • 'NaT':将不明确的时间设置为NaT。
  • bool array:具有与时间戳相同长度的布尔数组,指示每个时间戳是否为夏令时。

293-2-3、nonexistent(可选,默认值为'raise')用于处理不存在的时间,例如从夏令时到标准时间的转换。默认情况下,如果时间不存在,会引发错误。可以选择以下选项之一:

  • 'raise':如果遇到不存在的时间,则引发错误。
  • 'NaT':将不存在的时间设置为NaT。
  • timedelta:使用给定的时间差调整不存在的时间。
293-3、功能

        用于将时间序列中的每个时间戳向上取整到最近的指定频率。例如,如果将一个时间序列取整到小时,那么所有分钟和秒的信息都会被抹去,每个时间戳都会向上取整到下一个整点小时。

293-4、返回值

        返回值是一个pandas.Series对象,包含了将原时间序列的每个时间戳向上取整到最近频率的时间戳。

293-5、说明

        使用场景:

293-5-1、数据预处理:在处理时间序列数据时,有时候需要将时间戳标准化为相同的频率,以便进行后续分析。比如,将交易数据、传感器数据等按小时或天进行汇总分析。

293-5-2、时间间隔对齐:在计算时间间隔时,可能需要将时间戳向上取整到最近的频率,以确保时间间隔的一致性。例如,在计算每日、每小时的平均值、总和等统计数据时,可以使用该函数将时间戳对齐到整点。

293-5-3、可视化:在进行时间序列数据的可视化时,将时间戳向上取整到最近的频率可以使图表更易读。例如,将数据按小时或天进行聚合后再绘图,可以减少图表的复杂度,提高可读性。

293-5-4、数据合并:在合并多个时间序列数据时,可能需要将时间戳对齐到相同的频率,以便进行合并和比较。例如,将不同来源的传感器数据合并到同一个时间轴上,可以使用该函数将所有时间戳对齐到最近的整点。

293-6、用法
293-6-1、数据准备
293-6-2、代码示例
# 293、pandas.Series.dt.ceil函数
# 293-1、数据预处理
import pandas as pd
# 示例数据:传感器数据
data = {
    'timestamp': [
        '2024-08-07 08:45:00', '2024-08-07 08:50:00', '2024-08-07 09:05:00',
        '2024-08-07 09:15:00', '2024-08-07 10:05:00'
    ],
    'value': [10, 12, 13, 15, 20]
}
df = pd.DataFrame(data)
df['timestamp'] = pd.to_datetime(df['timestamp'])
# 将时间戳向上取整到最近的小时
df['rounded_timestamp'] = df['timestamp'].dt.ceil('h')
# 按小时汇总数据
hourly_summary = df.groupby('rounded_timestamp')['value'].sum().reset_index()
print(hourly_summary, end='\n\n')

# 293-2、时间间隔对齐
import pandas as pd
# 示例数据:交易数据
trade_data = {
    'trade_time': [
        '2024-08-07 10:15:25', '2024-08-07 10:15:35', '2024-08-07 10:15:45',
        '2024-08-07 10:16:00', '2024-08-07 10:16:20'
    ],
    'price': [100, 101, 102, 103, 104]
}
trade_df = pd.DataFrame(trade_data)
trade_df['trade_time'] = pd.to_datetime(trade_df['trade_time'])
# 将时间戳向上取整到最近的分钟
trade_df['aligned_time'] = trade_df['trade_time'].dt.ceil('min')
print(trade_df, end='\n\n')

# 293-3、可视化
import matplotlib.pyplot as plt
# 示例数据:网页访问数据
visit_data = {
    'visit_time': [
        '2024-08-01 12:34:56', '2024-08-01 14:22:33', '2024-08-02 09:18:45',
        '2024-08-02 10:12:34', '2024-08-03 16:45:12'
    ],
    'visits': [1, 1, 1, 1, 1]
}
visit_df = pd.DataFrame(visit_data)
visit_df['visit_time'] = pd.to_datetime(visit_df['visit_time'])
# 将时间戳向上取整到最近的天
visit_df['day'] = visit_df['visit_time'].dt.ceil('D')
# 按天汇总数据
daily_visits = visit_df.groupby('day')['visits'].sum().reset_index()
# 可视化
plt.figure(figsize=(10, 5))
plt.plot(daily_visits['day'], daily_visits['visits'], marker='o')
plt.xlabel('Date')
plt.ylabel('Number of Visits')
plt.title('Daily Web Visits')
plt.grid(True)
plt.show()

# 293-4、数据合并
import pandas as pd
# 示例数据:传感器A数据
sensor_a_data = {
    'timestamp': [
        '2024-08-07 10:15:25', '2024-08-07 10:35:12', '2024-08-07 10:55:45'
    ],
    'sensor_a_value': [0.1, 0.3, 0.5]
}
sensor_a_df = pd.DataFrame(sensor_a_data)
sensor_a_df['timestamp'] = pd.to_datetime(sensor_a_df['timestamp'])
sensor_a_df['timestamp'] = sensor_a_df['timestamp'].dt.ceil('h')
# 示例数据:传感器B数据
sensor_b_data = {
    'timestamp': [
        '2024-08-07 11:05:21', '2024-08-07 11:22:33'
    ],
    'sensor_b_value': [0.6, 0.7]
}
sensor_b_df = pd.DataFrame(sensor_b_data)
sensor_b_df['timestamp'] = pd.to_datetime(sensor_b_df['timestamp'])
sensor_b_df['timestamp'] = sensor_b_df['timestamp'].dt.ceil('h')
# 合并数据
merged_df = pd.merge(sensor_a_df, sensor_b_df, on='timestamp', how='outer')
print(merged_df, end='\n\n')
293-6-3、结果输出
# 293、pandas.Series.dt.ceil函数
# 293-1、数据预处理
#     rounded_timestamp  value
# 0 2024-08-07 09:00:00     22
# 1 2024-08-07 10:00:00     28
# 2 2024-08-07 11:00:00     20

# 293-2、时间间隔对齐
#            trade_time  price        aligned_time
# 0 2024-08-07 10:15:25    100 2024-08-07 10:16:00
# 1 2024-08-07 10:15:35    101 2024-08-07 10:16:00
# 2 2024-08-07 10:15:45    102 2024-08-07 10:16:00
# 3 2024-08-07 10:16:00    103 2024-08-07 10:16:00
# 4 2024-08-07 10:16:20    104 2024-08-07 10:17:00

# 293-3、可视化
# 见图1

# 293-4、数据合并
#             timestamp  sensor_a_value  sensor_b_value
# 0 2024-08-07 11:00:00             0.1             NaN
# 1 2024-08-07 11:00:00             0.3             NaN
# 2 2024-08-07 11:00:00             0.5             NaN
# 3 2024-08-07 12:00:00             NaN             0.6
# 4 2024-08-07 12:00:00             NaN             0.7

图1:

294、pandas.Series.dt.month_name方法
294-1、语法
# 294、pandas.Series.dt.month_name方法
pandas.Series.dt.month_name(*args, **kwargs)
Return the month names with specified locale.

Parameters:
locale
str, optional
Locale determining the language in which to return the month name. Default is English locale ('en_US.utf8'). Use the command locale -a on your terminal on Unix systems to find your locale language code.

Returns:
Series or Index
Series or Index of month names.
294-2、参数

294-2-1、*args(可选)其他位置参数,为后续扩展功能做预留。

294-2-2、**kwargs(可选)其他关键字参数,为后续扩展功能做预留。

294-2-2-1、locale(可选)指定返回的月份名称的语言环境。例如,“en”表示英语,“fr”表示法语。默认情况下,返回值是根据当前系统的默认语言环境生成的。

294-3、功能

        用于返回datetime类型的Series对象中每个日期的月份名称,且这些名称是以字符串的形式返回的,例如“January”、“February”等。

294-4、返回值

        返回一个pandas.Series对象,其中包含每个日期的月份名称。

294-5、说明

        使用场景:

294-5-1、数据可视化:在绘制时间序列图或统计图时,可以使用月份名称来标签和分类数据,使图表更具可读性。例如,绘制每个月的销售额图表时,使用月份名称作为 x 轴标签。

294-5-2、报告和分析:在生成数据报告时,可能需要按月份分组数据。将日期转换为月份名称可以帮助更直观地展示每个月的数据汇总和趋势。

294-5-3、数据清洗和预处理:在数据清洗过程中,可能需要将时间戳数据转换为更易于分析的格式,将日期转换为月份名称可以帮助将数据按月份进行聚合或分析。

294-5-4、市场分析:对于销售数据、用户活动数据等,可以按月份进行分析,以识别季节性趋势、销售高峰期或用户行为模式。

294-5-5、客户和用户行为分析:分析客户行为时,月份名称可以帮助识别客户在不同月份的活动模式或趋势,进而调整营销策略或活动计划。

294-5-6、财务和业务计划:企业在进行财务分析和业务计划时,需要按月份跟踪和预测各种财务指标,如收入、支出和利润等。

294-6、用法
294-6-1、数据准备
294-6-2、代码示例
# 294、pandas.Series.dt.month_name方法
# 294-1、数据可视化
import matplotlib.pyplot as plt
import pandas as pd
# 创建示例数据
data = {
    'date': pd.date_range(start='2024-01-01', periods=12, freq='ME'),
    'sales': [200, 220, 250, 270, 300, 320, 280, 310, 330, 340, 360, 380]
}
df = pd.DataFrame(data)
# 添加月份名称列
df['month'] = df['date'].dt.month_name()
# 绘制图表
plt.figure(figsize=(10, 6))
plt.plot(df['month'], df['sales'], marker='o', color='purple')
plt.xlabel('Month')
plt.ylabel('Sales')
plt.title('Monthly Sales')
plt.xticks(rotation=45)
plt.grid(True)
# 添加数据标签
for i, value in enumerate(df['sales']):
    plt.text(i, value + 5, str(value), ha='center', va='bottom', color='red', fontweight='bold')  # 在每个点上方显示标签并加粗
plt.show()

# 294-2、报告和分析
import pandas as pd
# 创建示例数据
data = {
    'date': pd.date_range(start='2024-01-01', periods=12, freq='ME'),
    'sales': [200, 220, 250, 270, 300, 320, 280, 310, 330, 340, 360, 380]
}
df = pd.DataFrame(data)
monthly_sales = df.groupby(df['date'].dt.month_name())['sales'].sum().reset_index()
monthly_sales.columns = ['Month', 'Total Sales']
print(monthly_sales, end='\n\n')

# 294-3、数据清洗和预处理
import pandas as pd
# 创建示例数据
data = {
    'date': pd.date_range(start='2024-01-01', periods=12, freq='ME'),
    'sales': [200, 220, 250, 270, 300, 320, 280, 310, 330, 340, 360, 380]
}
df = pd.DataFrame(data)
df['month_name'] = df['date'].dt.month_name()
print(df, end='\n\n')

# 294-4、市场分析
import pandas as pd
# 创建示例数据
data = {
    'date': pd.date_range(start='2024-01-01', periods=12, freq='ME'),
    'sales': [200, 220, 250, 270, 300, 320, 280, 310, 330, 340, 360, 380]
}
df = pd.DataFrame(data)
monthly_summary = df.groupby(df['date'].dt.month_name()).agg({
    'sales': ['mean', 'median', 'max']
}).reset_index()
print(monthly_summary, end='\n\n')

# 294-5、客户和用户行为分析
import pandas as pd
# 示例数据
user_data = {
    'activity_date': pd.date_range(start='2024-01-01', periods=30, freq='D'),
    'user_id': range(1, 31)
}
user_df = pd.DataFrame(user_data)
# 添加月份名称列
user_df['month'] = user_df['activity_date'].dt.month_name()
# 按月份统计用户活动次数
activity_summary = user_df.groupby('month').size().reset_index(name='activity_count')
print(activity_summary, end='\n\n')

# 294-6、财务和业务计划
import pandas as pd
# 示例财务数据
financial_data = {
    'date': pd.date_range(start='2024-01-01', periods=12, freq='ME'),
    'revenue': [1000, 1100, 1200, 1300, 1400, 1500, 1600, 1700, 1800, 1900, 2000, 2100]
}
financial_df = pd.DataFrame(financial_data)
# 添加月份名称列
financial_df['month'] = financial_df['date'].dt.month_name()
# 按月份汇总收入
monthly_revenue = financial_df.groupby('month')['revenue'].sum().reset_index()
print(monthly_revenue)
294-6-3、结果输出
# 294、pandas.Series.dt.month_name方法
# 294-1、数据可视化
# 见图2

# 294-2、报告和分析
#         Month  Total Sales
# 0       April          270
# 1      August          310
# 2    December          380
# 3    February          220
# 4     January          200
# 5        July          280
# 6        June          320
# 7       March          250
# 8         May          300
# 9    November          360
# 10    October          340
# 11  September          330

# 294-3、数据清洗和预处理
#          date  sales month_name
# 0  2024-01-31    200    January
# 1  2024-02-29    220   February
# 2  2024-03-31    250      March
# 3  2024-04-30    270      April
# 4  2024-05-31    300        May
# 5  2024-06-30    320       June
# 6  2024-07-31    280       July
# 7  2024-08-31    310     August
# 8  2024-09-30    330  September
# 9  2024-10-31    340    October
# 10 2024-11-30    360   November
# 11 2024-12-31    380   December

# 294-4、市场分析
#          date  sales            
#                 mean median  max
# 0       April  270.0  270.0  270
# 1      August  310.0  310.0  310
# 2    December  380.0  380.0  380
# 3    February  220.0  220.0  220
# 4     January  200.0  200.0  200
# 5        July  280.0  280.0  280
# 6        June  320.0  320.0  320
# 7       March  250.0  250.0  250
# 8         May  300.0  300.0  300
# 9    November  360.0  360.0  360
# 10    October  340.0  340.0  340
# 11  September  330.0  330.0  330

# 294-5、客户和用户行为分析
#      month  activity_count
# 0  January              30

# 294-6、财务和业务计划
#         month  revenue
# 0       April     1300
# 1      August     1700
# 2    December     2100
# 3    February     1100
# 4     January     1000
# 5        July     1600
# 6        June     1500
# 7       March     1200
# 8         May     1400
# 9    November     2000
# 10    October     1900
# 11  September     1800

图2:

 

295、pandas.Series.dt.day_name方法
295-1、语法
# 295、pandas.Series.dt.day_name方法
pandas.Series.dt.day_name(*args, **kwargs)
Return the day names with specified locale.

Parameters:
locale
str, optional
Locale determining the language in which to return the day name. Default is English locale ('en_US.utf8'). Use the command locale -a on your terminal on Unix systems to find your locale language code.

Returns:
Series or Index
Series or Index of day names.
295-2、参数

295-2-1、*args(可选)其他位置参数,为后续扩展功能做预留。

295-2-2、**kwargs(可选)其他关键字参数,为后续扩展功能做预留。

295-2-2-1、locale(可选)指定返回的月份名称的语言环境。例如,“en”表示英语,“fr”表示法语。默认情况下,返回值是根据当前系统的默认语言环境生成的。

295-3、功能

        提取日期时间数据中的星期几名称。如,给定一个日期 2024-08-08,它会返回"Thursday"。

295-4、返回值

        返回一个包含星期几名称的Series对象,字符串类型,例如"Monday"、"Tuesday"等。

295-5、说明

        使用场景:

295-5-1、数据分析:在进行时间序列分析时,提取星期几名称可以帮助识别数据的周期性模式。例如,销售数据可能在周末和工作日有不同的趋势。

295-5-2、可视化:当创建基于日期的图表时,使用星期几名称可以使图表更具可读性,便于观察不同星期几的表现。

295-5-3、报表生成:在生成日报或周报时,显示具体的星期几可以让读者更清晰地理解数据的上下文。

295-5-4、事件调度:在安排活动或任务时,了解每个日期是星期几可以帮助选择合适的时间。例如,某些活动可能更适合在周末进行。

295-5-5、数据清洗:在处理包含日期的原始数据时,可以通过提取星期几来过滤或标记特定日期的数据,以便后续分析。

295-5-6、用户行为分析:在分析用户行为时,了解用户在不同星期几的活动情况,可以帮助优化营销策略和产品推荐。

295-6、用法
295-6-1、数据准备
295-6-2、代码示例
# 295、pandas.Series.dt.day_name方法
# 295-1、数据分析
import pandas as pd
# 创建示例销售数据
data = {
    'date': pd.date_range(start='2024-08-01', periods=10),
    'sales': [200, 300, 250, 400, 500, 600, 700, 800, 900, 1000]
}
df = pd.DataFrame(data)
# 提取星期几名称
df['day_name'] = df['date'].dt.day_name()
# 按星期几汇总销售数据
sales_by_day = df.groupby('day_name')['sales'].sum().sort_index()
print(sales_by_day, end='\n\n')

# 295-2、可视化
import matplotlib.pyplot as plt
import pandas as pd
# 创建示例销售数据
data = {
    'date': pd.date_range(start='2024-08-01', periods=10),
    'sales': [200, 300, 250, 400, 500, 600, 700, 800, 900, 1000]
}
df = pd.DataFrame(data)
# 提取星期几名称
df['day_name'] = df['date'].dt.day_name()
# 使用前面的数据
sales_by_day = df.groupby('day_name')['sales'].sum().sort_index()
# 绘制柱状图
sales_by_day.plot(kind='bar',color='green')
plt.title('Sales by Day of the Week')
plt.xlabel('Day of the Week')
plt.ylabel('Total Sales')
plt.xticks(rotation=15, color='blue')
plt.show()

# 295-3、报表生成
import pandas as pd
# 创建示例销售数据
data = {
    'date': pd.date_range(start='2024-08-01', periods=10),
    'sales': [200, 300, 250, 400, 500, 600, 700, 800, 900, 1000]
}
df = pd.DataFrame(data)
# 创建日报
report = df[['date', 'sales']]
report['day_name'] = report['date'].dt.day_name()
# 打印日报
print(report, end='\n\n')

# 295-4、事件调度
import pandas as pd
# 假设我们有一组活动数据
events = {
    'event': ['Event A', 'Event B', 'Event C', 'Event D'],
    'date': pd.to_datetime(['2024-08-03', '2024-08-05', '2024-08-06', '2024-08-07'])
}
events_df = pd.DataFrame(events)
# 添加星期几名称
events_df['day_name'] = events_df['date'].dt.day_name()
# 过滤出周末的活动
weekend_events = events_df[events_df['day_name'].isin(['Saturday', 'Sunday'])]
print(weekend_events, end='\n\n')

# 295-5、数据清洗
import pandas as pd
# 假设我们有一组原始数据
raw_data = {
    'date': pd.date_range(start='2024-08-01', periods=10),
    'value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
raw_df = pd.DataFrame(raw_data)
# 添加星期几名称
raw_df['day_name'] = raw_df['date'].dt.day_name()
# 添加一列标记周末
raw_df['is_weekend'] = raw_df['day_name'].isin(['Saturday', 'Sunday'])
print(raw_df, end='\n\n')

# 295-6、用户行为分析
import pandas as pd
# 假设我们有用户行为数据
user_activity = {
    'user_id': [1, 1, 2, 2, 3, 3],
    'activity_date': pd.to_datetime(['2024-08-01', '2024-08-02', '2024-08-03', '2024-08-04', '2024-08-05', '2024-08-06'])
}
activity_df = pd.DataFrame(user_activity)
# 添加星期几名称
activity_df['day_name'] = activity_df['activity_date'].dt.day_name()
# 按星期几汇总用户活动
activity_count = activity_df.groupby('day_name')['user_id'].count()
print(activity_count)
295-6-3、结果输出
# 295、pandas.Series.dt.day_name方法
# 295-1、数据分析
# day_name
# Friday       1200
# Monday        500
# Saturday     1250
# Sunday        400
# Thursday     1000
# Tuesday       600
# Wednesday     700
# Name: sales, dtype: int64

# 295-2、可视化
# 见图3

# 295-3、报表生成
#         date  sales   day_name
# 0 2024-08-01    200   Thursday
# 1 2024-08-02    300     Friday
# 2 2024-08-03    250   Saturday
# 3 2024-08-04    400     Sunday
# 4 2024-08-05    500     Monday
# 5 2024-08-06    600    Tuesday
# 6 2024-08-07    700  Wednesday
# 7 2024-08-08    800   Thursday
# 8 2024-08-09    900     Friday
# 9 2024-08-10   1000   Saturday

# 295-4、事件调度
#      event       date  day_name
# 0  Event A 2024-08-03  Saturday

# 295-5、数据清洗
#         date  value   day_name  is_weekend
# 0 2024-08-01      1   Thursday       False
# 1 2024-08-02      2     Friday       False
# 2 2024-08-03      3   Saturday        True
# 3 2024-08-04      4     Sunday        True
# 4 2024-08-05      5     Monday       False
# 5 2024-08-06      6    Tuesday       False
# 6 2024-08-07      7  Wednesday       False
# 7 2024-08-08      8   Thursday       False
# 8 2024-08-09      9     Friday       False
# 9 2024-08-10     10   Saturday        True

# 295-6、用户行为分析
# day_name
# Friday      1
# Monday      1
# Saturday    1
# Sunday      1
# Thursday    1
# Tuesday     1
# Name: user_id, dtype: int64

图3:

 

二、推荐阅读

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

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

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

相关文章

贪吃蛇游戏的实现:C++ 控制台版

功能概述 控制蛇的移动:使用WASD键控制蛇的移动方向。随机生成食物:蛇吃到食物后,食物会在游戏区域内随机生成。显示分数:游戏中会显示当前分数。游戏结束条件:当蛇碰到自己或走出边界时,游戏结束并显示“…

从巴黎到乐清,奥运精神引领全民健身新风尚!

16位火炬手接力,乐清点燃全民健身新篇章! 作者:华夏之音总监/李望 在巴黎奥运会如火如荼进行的第11天,中国体育代表团以22枚金牌的骄人战绩领跑金牌榜,每一枚金牌都闪耀着中华体育精神的璀璨光芒&#xff…

c++ 连接mysql

其实就是MYsql c语言的API #define _CRT_SECURE_NO_WARNINGS 1 #define HOST "192.168.226.1" #define USER "root" #define PASSWORD "123456" #define PORT 3066#include <iostream> #include <stdlib.h> #include <mysql.…

【北斗授时服务】NTP网络时间服务器 安徽京准智造

【北斗授时服务】NTP网络时间服务器 安徽京准智造 【北斗授时服务】NTP网络时间服务器 安徽京准智造 一、NTP网络时间服务器产品介绍&#xff1a; NTP网络时间服务器是针对计算机、自动化装置等进行校时而研发的高科技设备&#xff0c;该产品可从GPS卫星&#xff08;北斗卫星、…

数据采集工具之Canal

本文主要介绍canal采集mysql数据的tcp、datahub(kafka)模式如何实现 1、下载canal https://aliyun-datahub.oss-cn-hangzhou.aliyuncs.com/tools/canal.deployer-1.1.5-SNAPSHOT.tar.gz 2、TCP模式的实现 a、canal.properties 打开看看即可&#xff0c;不需要调整 ######…

蚁群求解旅行商问题(TSP)的MATLAB例程

程序概况 输入需要经过的节点坐标&#xff1a; 运行程序后&#xff0c;即可得到&#xff1a; 运行结果 左图为遍历各点的运动轨迹&#xff0c;最终会回到起点右图为平均距离&#xff08;红线&#xff09;和最短距离在迭代时的变化情况 源代码 代码下载链接如下&#xff1a…

【工具类】JAVA (Android Studio )+ JS 加密解密 AES + Base 64

JAVA &#xff08;Android Studio &#xff09; JS 加密解密 AES Base 64 前言JAVA 代码&#xff08;解密&#xff09;JS代码&#xff08;加密&#xff09; 前言 整个过程&#xff1a; JS 接口先用AES加密&#xff0c;然后加密内容转Base64 编码&#xff1b;JAVA进行Base64解…

虹科干货 | 如何确保干冰运输的安全和稳定?

在上篇文章中&#xff0c;我们介绍了液氮罐运输和存储温度监测解决方案&#xff0c;本文我们将会了解医药供应链中干冰运输和温度监测的关键要点。 干冰在医药行业的应用 干冰是固体二氧化碳&#xff0c;当表面温度为 -78.5℃时&#xff0c;一块冷冻的干冰会直接转变为气体&am…

Ubuntu-18.04.1安装JetBrains PyCharm 2018.1.6 专业版(永久破解方法)

软件安装包下载地址&#xff1a;Other Versions - PyCharm 将安装包放置Ubuntu系统中解压&#xff0c;到bin目录下找到pycharm.sh即可打开。 补丁破解方式&#xff08;需关闭软件pycharm&#xff0c;否则会打不开pycharm&#xff01;&#xff01;&#xff01;&#xff09;&am…

昂科烧录器支持MindMotion灵动微电子的32位微控制器MM32F5287L9P

芯片烧录行业领导者-昂科技术近日发布最新的烧录软件更新及新增支持的芯片型号列表&#xff0c;其中MindMotion灵动微电子的32位微控制器MM32F5287L9P已经被昂科的通用烧录平台AP8000所支持。 MM32F5287L9P搭载Armv8-M 架构“星辰”STAR-MC1处理器&#xff0c;最高工作频率可达…

CSS技巧专栏:一日一例 20-纯CSS实现点击会凹陷的按钮

本例图片 案例分析 其实这个按钮非常的简单啊&#xff0c;主要就是利用了box-shadow的inset。 布局代码 <button class"base">凹下的按钮</button> 基础样式 :root{--main-bg-color: #dcdcdc; /* 将页面背景色调整为浅灰色 */--color:#000;--hover-…

Cesium手动建模模型用Cesiumlab转3D Tiles模型位置不对,调整模型位置至指定经纬度

Cesium加载3Dtiles模型的平移和旋转_3dtiles先旋转再平移示例-CSDN博客 Cesium 平移cesiumlab生产的3Dtiles切片模型到目标经纬度-CSDN博客 【ArcGISCityEngine】自行制作Lod1城市大尺度白膜数据_cityengine 生成指定坐标集指定区域的白模-CSDN博客 以上次ArcGISCityEngine制…

IEEE Transactions on Intelligent Transportation Systems投稿指南

投稿记录 submitted 2024-5-29 Awaiting AE Assignment 2024-6-11 Under review 2024-6-15 Awaiting EIC Decision 2024-6-24 感觉要拒稿的节奏 Resubmit To Another Journal 2024-6-25 与期刊不符合 下载模板 IEEE Transactions on Intelligent Transportation Syste…

java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2

1、问题 SpringBoot升级报错&#xff1a; Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2 类找不到&#xff1a; Caused by: java.lang.ClassNotFoundException: ch.qos.logback.core.util.StatusPrinter22、…

【Vue3】Pinia $subscribe

【Vue3】Pinia $subscribe 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日子…

前端框架(三件套)

学习网站 HTML 系列教程&#xff08;有广告&#xff09; HTML&#xff08;超文本标记语言&#xff09; | MDN (mozilla.org)&#xff08;英文不太友好&#xff09; 1.HTML5 & CSS3 1.1HTML5表格 <!DOCTYPE html> <html lang"en"> <head>…

常见框架漏洞详解②!!

中间件 中间件&#xff08;英语&#xff1a;Middleware&#xff09;是提供系统软件和应⽤软件之间连接的软件&#xff0c;以便于软件各部 件之间的沟通。 中间件处在操作系统和更⾼⼀级应⽤程序之间。他充当的功能是&#xff1a;将应⽤程序运⾏环境与操作系统隔离&#xff0c;…

setState执行机制

当this.setState()被调用时&#xff0c;React会重新调用render方法来重新绘制UI 异步更新 setState通过一个队列机制实现state的更新当执行setState时&#xff0c;会将需要更新的state合并后放入状态队列&#xff0c;而不是立刻更新队列机制可以高效的批量更新state&#xff…

武汉流星汇聚:亚马逊跨境电商蓝海中的领航者,共绘商业新蓝图

在全球化日益加深的今天&#xff0c;跨境电商已成为连接世界市场的桥梁&#xff0c;为企业提供了前所未有的发展机遇。在这片充满机遇的蓝海中&#xff0c;武汉流星汇聚电子商务有限公司凭借其深厚的行业底蕴、卓越的用户体验以及“以客户为中心”的坚定理念&#xff0c;在亚马…

嵌入式学习day12(LinuxC高级)

由于C高级部分比较零碎&#xff0c;各部分之间没有联系&#xff0c;所以学起来比较累&#xff0c;多练习就好了 一丶Linux起源 寻科普|第二期:聊聊Linux的前世今生 UNIX和linux的区别&#xff1a; &#xff08;1&#xff09;linux是开发源代码的自由软件&#xff0e;而unix是…