当前位置:   article > 正文

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

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

目录

一、用法精讲

266、pandas.Series.dt.second属性

266-1、语法

266-2、参数

266-3、功能

266-4、返回值

266-5、说明

266-6、用法

266-6-1、数据准备

266-6-2、代码示例

266-6-3、结果输出

267、pandas.Series.dt.microsecond属性

267-1、语法

267-2、参数

267-3、功能

267-4、返回值

267-5、说明

267-6、用法

267-6-1、数据准备

267-6-2、代码示例

267-6-3、结果输出

268、pandas.Series.dt.nanosecond属性

268-1、语法

268-2、参数

268-3、功能

268-4、返回值

268-5、说明

268-6、用法

268-6-1、数据准备

268-6-2、代码示例

268-6-3、结果输出

269、pandas.Series.dt.dayofweek属性

269-1、语法

269-2、参数

269-3、功能

269-4、返回值

269-5、说明

269-6、用法

269-6-1、数据准备

269-6-2、代码示例

269-6-3、结果输出

270、pandas.Series.dt.weekday属性

270-1、语法

270-2、参数

270-3、功能

270-4、返回值

270-5、说明

270-6、用法

270-6-1、数据准备

270-6-2、代码示例

270-6-3、结果输出

二、推荐阅读

1、Python筑基之旅

2、Python函数之旅

3、Python算法之旅

4、Python魔法之旅

5、博客个人主页

一、用法精讲

266、pandas.Series.dt.second属性
266-1、语法
  1. # 266、pandas.Series.dt.second属性
  2. pandas.Series.dt.second
  3. The seconds of the datetime.
266-2、参数

        无

266-3、功能

        用于从包含datetime对象的pandas系列中提取秒数。

266-4、返回值

        返回一个包含每个datetime元素的秒数部分的Series对象。

266-5、说明

        使用场景:

266-5-1、详细时间分析:需要对时间戳数据进行详细分析时,可以使用dt.second提取秒数。例如,分析每天不同秒数的分布情况。

266-5-2、时间过滤:根据秒数进行数据过滤。例如,筛选出在特定秒数发生的事件。

266-5-3、特征工程:在机器学习或数据挖掘中,将秒数作为特征之一,进行模型训练和预测。

266-5-4、性能优化:在时间序列数据处理中,提取秒数可以帮助进行更细粒度的性能分析和优化。

266-5-5、日志分析:在分析服务器日志或其他时间戳数据时,提取秒数可以帮助识别特定秒数内的访问模式或事件。

266-6、用法
266-6-1、数据准备
266-6-2、代码示例
  1. # 266、pandas.Series.dt.second属性
  2. # 266-1、详细时间分析
  3. import pandas as pd
  4. # 创建一个包含10个时间戳的Series,每个时间戳间隔1秒
  5. data = pd.Series(pd.date_range("2024-01-01", periods=10, freq="s"))
  6. # 提取秒数
  7. seconds = data.dt.second
  8. print("详细时间分析-秒数部分:")
  9. print(seconds, end='\n\n')
  10. # 266-2、时间过滤
  11. import pandas as pd
  12. # 创建一个包含100个时间戳的Series,每个时间戳间隔1秒
  13. data = pd.Series(pd.date_range("2024-01-01", periods=100, freq="s"))
  14. # 筛选出在特定秒数(例如30秒)发生的事件
  15. filtered_data = data[data.dt.second == 30]
  16. print("时间过滤-特定秒数的时间戳:")
  17. print(filtered_data, end='\n\n')
  18. # 266-3、特征工程
  19. import pandas as pd
  20. # 创建一个包含10个时间戳的Series,每个时间戳间隔1秒
  21. data = pd.Series(pd.date_range("2024-01-01", periods=10, freq="s"))
  22. # 提取秒数并作为新列加入DataFrame
  23. data = pd.DataFrame(data, columns=['datetime'])
  24. data['second'] = data['datetime'].dt.second
  25. print("特征工程-添加秒数特征:")
  26. print(data, end='\n\n')
  27. # 266-4、性能优化
  28. import pandas as pd
  29. # 创建一个包含100个时间戳的Series,每个时间戳间隔1分钟
  30. start_times = pd.Series(pd.date_range("2024-01-01 12:00:00", periods=100, freq="min"))
  31. # 提取秒数
  32. seconds = start_times.dt.second
  33. # 筛选出秒数为0的时间点
  34. zero_second_times = start_times[seconds == 0]
  35. print("性能优化-秒数为0的时间点:")
  36. print(zero_second_times, end='\n\n')
  37. # 266-5、日志分析
  38. import pandas as pd
  39. # 创建一个包含特定时间戳的Series
  40. log_times = pd.Series(pd.to_datetime(["2024-01-01 00:00:10", "2024-01-01 00:00:20", "2024-01-01 00:00:30"]))
  41. # 提取秒数
  42. log_seconds = log_times.dt.second
  43. print("日志分析-日志时间戳的秒数部分:")
  44. print(log_seconds)
266-6-3、结果输出
  1. # 266、pandas.Series.dt.second属性
  2. # 266-1、详细时间分析
  3. # 详细时间分析-秒数部分:
  4. # 0 0
  5. # 1 1
  6. # 2 2
  7. # 3 3
  8. # 4 4
  9. # 5 5
  10. # 6 6
  11. # 7 7
  12. # 8 8
  13. # 9 9
  14. # dtype: int32
  15. # 266-2、时间过滤
  16. # 时间过滤-特定秒数的时间戳:
  17. # 30 2024-01-01 00:00:30
  18. # 90 2024-01-01 00:01:30
  19. # dtype: datetime64[ns]
  20. # 266-3、特征工程
  21. # 特征工程-添加秒数特征:
  22. # datetime second
  23. # 0 2024-01-01 00:00:00 0
  24. # 1 2024-01-01 00:00:01 1
  25. # 2 2024-01-01 00:00:02 2
  26. # 3 2024-01-01 00:00:03 3
  27. # 4 2024-01-01 00:00:04 4
  28. # 5 2024-01-01 00:00:05 5
  29. # 6 2024-01-01 00:00:06 6
  30. # 7 2024-01-01 00:00:07 7
  31. # 8 2024-01-01 00:00:08 8
  32. # 9 2024-01-01 00:00:09 9
  33. # 266-4、性能优化
  34. # 性能优化-秒数为0的时间点:
  35. # 0 2024-01-01 12:00:00
  36. # 1 2024-01-01 12:01:00
  37. # 2 2024-01-01 12:02:00
  38. # 3 2024-01-01 12:03:00
  39. # 4 2024-01-01 12:04:00
  40. # ...
  41. # 95 2024-01-01 13:35:00
  42. # 96 2024-01-01 13:36:00
  43. # 97 2024-01-01 13:37:00
  44. # 98 2024-01-01 13:38:00
  45. # 99 2024-01-01 13:39:00
  46. # Length: 100, dtype: datetime64[ns]
  47. # 266-5、日志分析
  48. # 日志分析-日志时间戳的秒数部分:
  49. # 0 10
  50. # 1 20
  51. # 2 30
  52. # dtype: int32
267、pandas.Series.dt.microsecond属性
267-1、语法
  1. # 267、pandas.Series.dt.microsecond属性
  2. pandas.Series.dt.microsecond
  3. The microseconds of the datetime.
267-2、参数

        无

267-3、功能

        用于提取时间序列数据中微秒部分的值。

267-4、返回值

        返回一个包含时间序列中每个时间戳的微秒值的Series。

267-5、说明

        无

267-6、用法
267-6-1、数据准备
267-6-2、代码示例
  1. # 267、pandas.Series.dt.microsecond属性
  2. # 267-1、提取微秒值
  3. import pandas as pd
  4. # 创建一个包含微秒部分的时间戳的Series
  5. time_series = pd.Series(pd.date_range("2024-01-01 00:00:00", periods=5, freq="333333us"))
  6. # 提取微秒部分
  7. microseconds = time_series.dt.microsecond
  8. print("微秒值:")
  9. print(microseconds, end='\n\n')
  10. # 267-2、筛选特定微秒值的时间戳
  11. import pandas as pd
  12. # 创建一个包含微秒部分的时间戳的Series
  13. time_series = pd.Series(pd.date_range("2024-01-01 00:00:00", periods=10, freq="333333us"))
  14. # 提取微秒部分
  15. microseconds = time_series.dt.microsecond
  16. # 筛选出微秒部分为333333的时间戳
  17. filtered_time_series = time_series[microseconds == 333333]
  18. print("微秒部分为333333的时间戳:")
  19. print(filtered_time_series, end='\n\n')
  20. # 267-3、添加微秒列到DataFrame
  21. import pandas as pd
  22. # 创建一个包含微秒部分的时间戳的Series
  23. time_series = pd.Series(pd.date_range("2024-01-01 00:00:00", periods=5, freq="333333us"))
  24. # 创建DataFrame并添加微秒列
  25. df = pd.DataFrame(time_series, columns=['datetime'])
  26. df['microsecond'] = df['datetime'].dt.microsecond
  27. print("添加微秒列的DataFrame:")
  28. print(df, end='\n\n')
  29. # 267-4、详细时间分析-微秒部分
  30. import pandas as pd
  31. # 创建一个包含微秒部分的时间戳的Series
  32. time_series = pd.Series(pd.date_range("2024-01-01 00:00:00", periods=10, freq="333333us"))
  33. # 提取微秒部分
  34. microseconds = time_series.dt.microsecond
  35. print("详细时间分析-微秒部分:")
  36. print(microseconds)
267-6-3、结果输出
  1. # 267、pandas.Series.dt.microsecond属性
  2. # 267-1、提取微秒值
  3. # 微秒值:
  4. # 0 0
  5. # 1 333333
  6. # 2 666666
  7. # 3 999999
  8. # 4 333332
  9. # dtype: int32
  10. # 267-2、筛选特定微秒值的时间戳
  11. # 微秒部分为333333的时间戳:
  12. # 1 2024-01-01 00:00:00.333333
  13. # dtype: datetime64[ns]
  14. # 267-3、添加微秒列到DataFrame
  15. # 添加微秒列的DataFrame:
  16. # datetime microsecond
  17. # 0 2024-01-01 00:00:00.000000 0
  18. # 1 2024-01-01 00:00:00.333333 333333
  19. # 2 2024-01-01 00:00:00.666666 666666
  20. # 3 2024-01-01 00:00:00.999999 999999
  21. # 4 2024-01-01 00:00:01.333332 333332
  22. # 267-4、详细时间分析-微秒部分
  23. # 详细时间分析-微秒部分:
  24. # 0 0
  25. # 1 333333
  26. # 2 666666
  27. # 3 999999
  28. # 4 333332
  29. # 5 666665
  30. # 6 999998
  31. # 7 333331
  32. # 8 666664
  33. # 9 999997
  34. # dtype: int32
268、pandas.Series.dt.nanosecond属性
268-1、语法
  1. # 268、pandas.Series.dt.nanosecond属性
  2. pandas.Series.dt.nanosecond
  3. The nanoseconds of the datetime.
268-2、参数

        无

268-3、功能

        用于提取时间序列数据中纳秒部分的值。

268-4、返回值

        返回一个包含时间序列中每个时间戳的纳秒值的Series。

268-5、说明

        无

268-6、用法
268-6-1、数据准备
268-6-2、代码示例
  1. # 268、pandas.Series.dt.nanosecond属性
  2. # 268-1、提取纳秒值
  3. import pandas as pd
  4. # 创建一个包含纳秒部分的时间戳的Series
  5. time_series = pd.Series(pd.date_range("2024-01-01 00:00:00", periods=5, freq="333333333ns"))
  6. # 提取纳秒部分
  7. nanoseconds = time_series.dt.nanosecond
  8. print("纳秒值:")
  9. print(nanoseconds, end='\n\n')
  10. # 268-2、筛选特定纳秒值的时间戳
  11. import pandas as pd
  12. # 创建一个包含纳秒部分的时间戳的Series
  13. time_series = pd.Series(pd.date_range("2024-01-01 00:00:00", periods=10, freq="333333333ns"))
  14. # 提取纳秒部分
  15. nanoseconds = time_series.dt.nanosecond
  16. # 筛选出纳秒部分为333333333的时间戳
  17. filtered_time_series = time_series[nanoseconds == 333333333]
  18. print("纳秒部分为333333333的时间戳:")
  19. print(filtered_time_series, end='\n\n')
  20. # 268-3、添加纳秒列到DataFrame
  21. import pandas as pd
  22. # 创建一个包含纳秒部分的时间戳的Series
  23. time_series = pd.Series(pd.date_range("2024-01-01 00:00:00", periods=5, freq="333333333ns"))
  24. # 创建DataFrame并添加纳秒列
  25. df = pd.DataFrame(time_series, columns=['datetime'])
  26. df['nanosecond'] = df['datetime'].dt.nanosecond
  27. print("添加纳秒列的DataFrame:")
  28. print(df, end='\n\n')
  29. # 268-4、详细时间分析-纳秒部分
  30. import pandas as pd
  31. # 创建一个包含纳秒部分的时间戳的Series
  32. time_series = pd.Series(pd.date_range("2024-01-01 00:00:00", periods=10, freq="333333333ns"))
  33. # 提取纳秒部分
  34. nanoseconds = time_series.dt.nanosecond
  35. print("详细时间分析-纳秒部分:")
  36. print(nanoseconds)
268-6-3、结果输出
  1. # 268、pandas.Series.dt.nanosecond属性
  2. # 268-1、提取纳秒值
  3. # 纳秒值:
  4. # 0 0
  5. # 1 333
  6. # 2 666
  7. # 3 999
  8. # 4 332
  9. # dtype: int32
  10. # 268-2、筛选特定纳秒值的时间戳
  11. # 纳秒部分为333333333的时间戳:
  12. # Series([], dtype: datetime64[ns])
  13. # 268-3、添加纳秒列到DataFrame
  14. # 添加纳秒列的DataFrame:
  15. # datetime nanosecond
  16. # 0 2024-01-01 00:00:00.000000000 0
  17. # 1 2024-01-01 00:00:00.333333333 333
  18. # 2 2024-01-01 00:00:00.666666666 666
  19. # 3 2024-01-01 00:00:00.999999999 999
  20. # 4 2024-01-01 00:00:01.333333332 332
  21. # 268-4、详细时间分析-纳秒部分
  22. # 详细时间分析-纳秒部分:
  23. # 0 0
  24. # 1 333
  25. # 2 666
  26. # 3 999
  27. # 4 332
  28. # 5 665
  29. # 6 998
  30. # 7 331
  31. # 8 664
  32. # 9 997
  33. # dtype: int32
269、pandas.Series.dt.dayofweek属性
269-1、语法
  1. # 269、pandas.Series.dt.dayofweek属性
  2. pandas.Series.dt.dayofweek
  3. The day of the week with Monday=0, Sunday=6.
  4. Return the day of the week. It is assumed the week starts on Monday, which is denoted by 0 and ends on Sunday which is denoted by 6. This method is available on both Series with datetime values (using the dt accessor) or DatetimeIndex.
  5. Returns:
  6. Series or Index
  7. Containing integers indicating the day number.
269-2、参数

        无

269-3、功能

        用于获取日期时间序列中每个日期的星期几的属性,具备此功能的还有pandas.Series.dt.day_of_week属性。

269-4、返回值

        返回一个整数值,表示一周中的星期几,其中0代表星期一,6代表星期天。

269-5、说明

        使用场景:

269-5-1、工作日和周末分析:在进行销售、流量或其他业务指标的分析时,可以使用该属性来区分工作日和周末,从而更好地理解客户行为模式。

269-5-2、时间序列数据的聚合:可以根据星期几对数据进行分组,从而计算每个星期几的平均值、总和或其他统计信息。例如,分析每周的销售额变化趋势。

269-5-3、调度和排班:在员工排班或资源调度中,可以利用该属性来确定哪些日期是工作日,进而制定合理的工作安排。

269-5-4、季节性趋势分析:在一些行业(如零售、旅游等),不同星期几的销售或用户活动可能存在显著差异,通过分析这些差异可以帮助制定更有效的营销策略。

269-5-5、数据清洗和预处理:在处理时间序列数据时,可以利用该属性筛选出特定的日期,例如只保留工作日的数据,去除周末的数据。

269-5-6、事件驱动分析:对于特定事件(如假期、促销活动等)的影响分析,可以使用星期几信息来比较这些事件在不同日期的效果。

269-6、用法
269-6-1、数据准备
269-6-2、代码示例
  1. # 269、pandas.Series.dt.dayofweek属性
  2. # 269-1、工作日和周末分析
  3. import pandas as pd
  4. # 创建一个包含日期的数据
  5. data = {'date': pd.date_range(start='2024-08-01', periods=10)}
  6. df = pd.DataFrame(data)
  7. # 提取星期几
  8. df['day_of_week'] = df['date'].dt.dayofweek
  9. # 标记工作日和周末
  10. df['is_weekend'] = df['day_of_week'] >= 5
  11. print(df, end='\n\n')
  12. # 269-2、时间序列数据的聚合
  13. import pandas as pd
  14. # 创建一个示例数据框
  15. data = {'date': pd.date_range(start='2024-08-01', periods=30),
  16. 'sales': range(30)}
  17. df = pd.DataFrame(data)
  18. # 提取星期几并进行分组
  19. df['day_of_week'] = df['date'].dt.dayofweek
  20. weekly_sales = df.groupby('day_of_week')['sales'].sum()
  21. print(weekly_sales, end='\n\n')
  22. # 269-3、调度和排班
  23. import pandas as pd
  24. # 创建一个包含日期的数据
  25. data = {'date': pd.date_range(start='2024-08-01', periods=10)}
  26. df = pd.DataFrame(data)
  27. # 提取星期几
  28. df['day_of_week'] = df['date'].dt.dayofweek
  29. # 根据星期几制定排班计划
  30. df['shift'] = df['day_of_week'].apply(lambda x: 'Morning' if x < 5 else 'Day Off')
  31. print(df, end='\n\n')
  32. # 269-4、季节性趋势分析
  33. import pandas as pd
  34. import numpy as np
  35. # 创建一个包含日期和销售额的数据
  36. np.random.seed(0)
  37. data = {'date': pd.date_range(start='2024-01-01', periods=365),
  38. 'sales': np.random.randint(100, 1000, size=365)}
  39. df = pd.DataFrame(data)
  40. # 提取星期几
  41. df['day_of_week'] = df['date'].dt.dayofweek
  42. # 计算每个星期几的平均销售额
  43. weekly_avg_sales = df.groupby('day_of_week')['sales'].mean()
  44. print(weekly_avg_sales, end='\n\n')
  45. # 269-5、数据清洗和预处理
  46. import pandas as pd
  47. # 创建一个包含日期和数据的示例
  48. data = {'date': pd.date_range(start='2024-01-01', periods=10),
  49. 'value': range(10)}
  50. df = pd.DataFrame(data)
  51. # 提取星期几
  52. df['day_of_week'] = df['date'].dt.dayofweek
  53. # 只保留工作日的数据
  54. df_weekdays = df[df['day_of_week'] < 5]
  55. print(df_weekdays, end='\n\n')
  56. # 269-6、事件驱动分析
  57. import pandas as pd
  58. # 创建一个包含日期和事件的数据
  59. data = {'date': pd.date_range(start='2024-01-01', periods=10),
  60. 'event': ['Promotion', 'Regular', 'Promotion', 'Regular', 'Promotion', 'Regular', 'Regular', 'Promotion', 'Regular', 'Promotion']}
  61. df = pd.DataFrame(data)
  62. # 提取星期几
  63. df['day_of_week'] = df['date'].dt.dayofweek
  64. # 按照星期几和事件类型进行聚合
  65. event_analysis = df.groupby(['day_of_week', 'event']).size().unstack(fill_value=0)
  66. print(event_analysis)
269-6-3、结果输出
  1. # 269、pandas.Series.dt.dayofweek属性
  2. # 269-1、工作日和周末分析
  3. # date day_of_week is_weekend
  4. # 0 2024-08-01 3 False
  5. # 1 2024-08-02 4 False
  6. # 2 2024-08-03 5 True
  7. # 3 2024-08-04 6 True
  8. # 4 2024-08-05 0 False
  9. # 5 2024-08-06 1 False
  10. # 6 2024-08-07 2 False
  11. # 7 2024-08-08 3 False
  12. # 8 2024-08-09 4 False
  13. # 9 2024-08-10 5 True
  14. # 269-2、时间序列数据的聚合
  15. # day_of_week
  16. # 0 58
  17. # 1 62
  18. # 2 66
  19. # 3 70
  20. # 4 75
  21. # 5 50
  22. # 6 54
  23. # Name: sales, dtype: int64
  24. # 269-3、调度和排班
  25. # date day_of_week shift
  26. # 0 2024-08-01 3 Morning
  27. # 1 2024-08-02 4 Morning
  28. # 2 2024-08-03 5 Day Off
  29. # 3 2024-08-04 6 Day Off
  30. # 4 2024-08-05 0 Morning
  31. # 5 2024-08-06 1 Morning
  32. # 6 2024-08-07 2 Morning
  33. # 7 2024-08-08 3 Morning
  34. # 8 2024-08-09 4 Morning
  35. # 9 2024-08-10 5 Day Off
  36. # 269-4、季节性趋势分析
  37. # day_of_week
  38. # 0 580.943396
  39. # 1 493.384615
  40. # 2 630.538462
  41. # 3 484.019231
  42. # 4 548.192308
  43. # 5 583.346154
  44. # 6 547.403846
  45. # Name: sales, dtype: float64
  46. # 269-5、数据清洗和预处理
  47. # date value day_of_week
  48. # 0 2024-01-01 0 0
  49. # 1 2024-01-02 1 1
  50. # 2 2024-01-03 2 2
  51. # 3 2024-01-04 3 3
  52. # 4 2024-01-05 4 4
  53. # 7 2024-01-08 7 0
  54. # 8 2024-01-09 8 1
  55. # 9 2024-01-10 9 2
  56. # 269-6、事件驱动分析
  57. # event Promotion Regular
  58. # day_of_week
  59. # 0 2 0
  60. # 1 0 2
  61. # 2 2 0
  62. # 3 0 1
  63. # 4 1 0
  64. # 5 0 1
  65. # 6 0 1
270、pandas.Series.dt.weekday属性
270-1、语法
  1. # 270、pandas.Series.dt.weekday属性
  2. pandas.Series.dt.weekday
  3. The day of the week with Monday=0, Sunday=6.
  4. Return the day of the week. It is assumed the week starts on Monday, which is denoted by 0 and ends on Sunday which is denoted by 6. This method is available on both Series with datetime values (using the dt accessor) or DatetimeIndex.
  5. Returns:
  6. Series or Index
  7. Containing integers indicating the day number.
270-2、参数

        无

270-3、功能

        用于提取datetime对象的星期几。

270-4、返回值

        返回值是一个整数,其中0表示星期一,1表示星期二,以此类推,6表示星期日。

270-5、说明

        使用场景:

270-5-1、数据分析:在进行数据分析时,了解某些事件发生的星期几可以帮助识别趋势。例如,某些销售数据可能在周末更高,而其他业务则可能在工作日更繁忙。

270-5-2、数据可视化:在绘制图表时,可以根据星期几对数据进行分组,从而更清晰地展示不同时间段的行为模式。例如,使用条形图展示每周各天的销售额。

270-5-3、业务决策:在制定营销策略时,了解客户行为与星期几的关系可以帮助优化广告投放时间和促销活动。例如,可以在特定的日子进行促销,以吸引更多顾客。

270-5-4、调度与规划:在项目管理或人力资源调度中,可以根据工作日和休息日来安排任务或人员,确保工作效率最大化。

270-5-5、时间序列分析:在时间序列数据分析中,提取星期几信息可以作为特征之一,帮助构建更精准的预测模型。

270-5-6、事件记录与跟踪:在记录事件发生时间时,可以使用星期几来分析事件的发生频率与特定日期的关系,比如员工请假、客户投诉等。

270-6、用法
270-6-1、数据准备
270-6-2、代码示例
  1. # 270、pandas.Series.dt.weekday属性
  2. # 270-1、数据分析:识别销售趋势
  3. import pandas as pd
  4. # 创建示例销售数据
  5. data = {
  6. 'date': pd.date_range(start='2024-01-01', periods=30),
  7. 'sales': [200, 220, 210, 230, 250, 270, 300, 320, 310, 330, 340, 350,
  8. 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470,
  9. 480, 490, 500, 510, 520, 530]
  10. }
  11. df = pd.DataFrame(data)
  12. # 提取星期几
  13. df['weekday'] = df['date'].dt.weekday
  14. # 计算每天的平均销售额
  15. average_sales_by_weekday = df.groupby('weekday')['sales'].mean()
  16. print(average_sales_by_weekday, end='\n\n')
  17. # 270-2、数据可视化:展示每周各天的销售额
  18. import pandas as pd
  19. import matplotlib.pyplot as plt
  20. # 创建示例销售数据
  21. data = {
  22. 'date': pd.date_range(start='2024-01-01', periods=30),
  23. 'sales': [200, 220, 210, 230, 250, 270, 300, 320, 310, 330, 340, 350,
  24. 360, 370, 380, 390, 400, 410, 420, 430, 440, 450, 460, 470,
  25. 480, 490, 500, 510, 520, 530]
  26. }
  27. df = pd.DataFrame(data)
  28. df['weekday'] = df['date'].dt.weekday
  29. # 按星期几分组并计算总销售额
  30. total_sales_by_weekday = df.groupby('weekday')['sales'].sum()
  31. # 绘制条形图
  32. total_sales_by_weekday.plot(kind='bar', color='skyblue')
  33. plt.xlabel('Weekday (0=Monday, 6=Sunday)')
  34. plt.ylabel('Total Sales')
  35. plt.title('Total Sales by Weekday')
  36. plt.xticks(ticks=range(7), labels=['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], rotation=45)
  37. plt.show()
  38. # 270-3、业务决策:优化广告投放时间
  39. import pandas as pd
  40. # 创建示例广告投放数据
  41. data = {
  42. 'ad_date': pd.date_range(start='2024-01-01', periods=30),
  43. 'ad_cost': [1000, 1200, 1100, 1300, 1500, 1600, 1700, 1800, 1750, 1900,
  44. 2000, 2100, 2200, 2300, 2400, 2500, 2600, 2700, 2800, 2900,
  45. 3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900]
  46. }
  47. df = pd.DataFrame(data)
  48. # 提取星期几
  49. df['weekday'] = df['ad_date'].dt.weekday
  50. # 计算广告成本按星期几的总和
  51. ad_cost_by_weekday = df.groupby('weekday')['ad_cost'].sum()
  52. print(ad_cost_by_weekday, end='\n\n')
  53. # 270-4、调度与规划:安排任务或人员
  54. import pandas as pd
  55. # 创建示例任务数据
  56. tasks = {
  57. 'task_date': pd.date_range(start='2024-01-01', periods=30),
  58. 'task': ['Task {}'.format(i) for i in range(30)]
  59. }
  60. df = pd.DataFrame(tasks)
  61. # 提取星期几
  62. df['weekday'] = df['task_date'].dt.weekday
  63. # 按星期几分配任务
  64. tasks_by_weekday = df.groupby('weekday')['task'].count()
  65. print(tasks_by_weekday, end='\n\n')
  66. # 270-5、时间序列分析:构建预测模型特征
  67. import pandas as pd
  68. # 创建示例时间序列数据
  69. data = {
  70. 'date': pd.date_range(start='2024-01-01', periods=100),
  71. 'value': range(100)
  72. }
  73. df = pd.DataFrame(data)
  74. # 提取星期几作为特征
  75. df['weekday'] = df['date'].dt.weekday
  76. print(df.head(), end='\n\n')
  77. # 270-6、事件记录与跟踪:分析事件发生频率
  78. import pandas as pd
  79. # 创建示例事件数据
  80. events = {
  81. 'event_date': pd.date_range(start='2024-01-01', periods=50),
  82. 'event_type': ['Type {}'.format(i % 5) for i in range(50)]
  83. }
  84. df = pd.DataFrame(events)
  85. # 提取星期几
  86. df['weekday'] = df['event_date'].dt.weekday
  87. # 统计每星期几的事件数量
  88. events_by_weekday = df.groupby('weekday').size()
  89. print(events_by_weekday)
270-6-3、结果输出
  1. # 270、pandas.Series.dt.weekday属性
  2. # 270-1、数据分析:识别销售趋势
  3. # weekday
  4. # 0 374.0
  5. # 1 382.0
  6. # 2 352.5
  7. # 3 365.0
  8. # 4 377.5
  9. # 5 390.0
  10. # 6 405.0
  11. # Name: sales, dtype: float64
  12. # 270-2、数据可视化:展示每周各天的销售额
  13. # 见图1
  14. # 270-3、业务决策:优化广告投放时间
  15. # weekday
  16. # 0 12100
  17. # 1 12550
  18. # 2 8900
  19. # 3 9400
  20. # 4 9900
  21. # 5 10300
  22. # 6 10700
  23. # Name: ad_cost, dtype: int64
  24. # 270-4、调度与规划:安排任务或人员
  25. # weekday
  26. # 0 5
  27. # 1 5
  28. # 2 4
  29. # 3 4
  30. # 4 4
  31. # 5 4
  32. # 6 4
  33. # Name: task, dtype: int64
  34. # 270-5、时间序列分析:构建预测模型特征
  35. # date value weekday
  36. # 0 2024-01-01 0 0
  37. # 1 2024-01-02 1 1
  38. # 2 2024-01-03 2 2
  39. # 3 2024-01-04 3 3
  40. # 4 2024-01-05 4 4
  41. # 270-6、事件记录与跟踪:分析事件发生频率
  42. # weekday
  43. # 0 8
  44. # 1 7
  45. # 2 7
  46. # 3 7
  47. # 4 7
  48. # 5 7
  49. # 6 7
  50. # dtype: int64

图1:

二、推荐阅读

1、Python筑基之旅
2、Python函数之旅
3、Python算法之旅
4、Python魔法之旅
5、博客个人主页
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/991901
推荐阅读
相关标签
  

闽ICP备14008679号