pandas销售数据分析

数据保存在data目录

  • 消费者数据:customers.csv
  • 商品数据:products.csv
  • 交易数据:transactions.csv

customers.csv数据结构:

字段描述
customer_id客户ID
gender性别
age年龄
region地区
membership_date会员日期

products.csv数据结构:

字段描述
product_id产品ID
category产品类别
brand品牌
price价格

transactions.csv数据结构:

字段描述
transaction_id交易ID
customer_id客户ID
product_id产品ID
quantity购买数量
transaction_date交易日期
price交易价格
amount交易金额

加载CSV数据,编写代码完成以下需求:

  1. 计算每个客户的总消费金额
  2. 计算每个客户的平均订单金额
  3. 按产品类别统计销售总额和销售量
  4. 按性别统计客户数量
  5. 创建年龄分布直方图数据
  6. 计算每个月的销售总额(时间序列分析)
  7. 找出最畅销的10种产品
  8. 找出消费最高的10个客户
  9. 计算不同品牌产品的平均价格
  10. 创建产品类别和性别之间的交叉表
  11. 创建产品类别和年龄组之间的交叉表
  12. 创建区域和产品类别之间的交叉表
  13. 创建性别和区域之间的交叉表
  14. 计算每个客户的首次购买日期和最近购买日期
  15. 计算客户生命周期价值(CLV)假设为一年
  16. 创建一个透视表,显示每个区域、每个类别的销售总额
  17. 创建一个透视表,显示每个月、每个类别的销售总额
  18. 创建一个透视表,显示每个区域、每个性别在各个类别上的平均消费
  19. 计算每个客户的购买频率(每年购买次数)
  20. 分析会员时长与消费金额之间的关系

导包

import pandas as pd  # 导入pandas库,用于数据处理和分析
import numpy as np  # 导入numpy库,用于数值计算
from datetime import datetime, timedelta  # 导入datetime和timedelta模块,用于处理日期和时间
import os  # 导入os库,用于操作系统相关功能,如文件和目录操作# 创建results目录(如果不存在)
os.makedirs('results', exist_ok=True)

加载数据

# 加载数据
customers = pd.read_csv('data/customers.csv')  # 加载客户数据
products = pd.read_csv('data/products.csv')  # 加载产品数据
transactions = pd.read_csv('data/transactions.csv')  # 加载交易数据# 将日期列转换为datetime类型
customers['membership_date'] = pd.to_datetime(customers['membership_date'])  # 将会员日期列转换为datetime类型
transactions['transaction_date'] = pd.to_datetime(transactions['transaction_date'])  # 将交易日期列转换为datetime类型

1. 计算每个客户的总消费金额

# 1. 计算每个客户的总消费金额
customer_spending = transactions.groupby('customer_id')['amount'].sum().reset_index()  # 按客户ID分组,计算每个客户的总消费金额
customer_spending.columns = ['customer_id', 'total_spending']  # 重命名列名
customer_spending.to_csv('results/customer_spending.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(customer_spending)
     customer_id  total_spending
0              1         1124.02
1              2         1710.33
2              3         1595.10
3              4         3881.27
4              5         3871.16
..           ...             ...
995          996         1880.70
996          997         2683.27
997          998         1631.01
998          999         2473.05
999         1000         2608.60[1000 rows x 2 columns]

2. 计算每个客户的平均订单金额

# 2. 计算每个客户的平均订单金额
avg_order_amount = transactions.groupby('customer_id').agg(total_spending=('amount', 'sum'),  # 计算每个客户的总消费金额num_transactions=('transaction_id', 'count')  # 计算每个客户的交易次数
).reset_index()
avg_order_amount['avg_order_amount'] = avg_order_amount['total_spending'] / avg_order_amount['num_transactions']  # 计算平均订单金额
avg_order_amount.to_csv('results/avg_order_amount.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(avg_order_amount)
     customer_id  total_spending  num_transactions  avg_order_amount
0              1         1124.02                10        112.402000
1              2         1710.33                 9        190.036667
2              3         1595.10                11        145.009091
3              4         3881.27                14        277.233571
4              5         3871.16                13        297.781538
..           ...             ...               ...               ...
995          996         1880.70                10        188.070000
996          997         2683.27                11        243.933636
997          998         1631.01                 9        181.223333
998          999         2473.05                10        247.305000
999         1000         2608.60                 8        326.075000[1000 rows x 4 columns]

3. 按产品类别统计销售总额和销售量

# 3. 按产品类别统计销售总额和销售量
category_sales = pd.merge(transactions, products, on='product_id', how='left')  # 将交易数据和产品数据按产品ID合并
category_sales = category_sales.groupby('category').agg(total_sales=('amount', 'sum'),  # 按产品类别分组,计算销售总额total_quantity=('quantity', 'sum')  # 按产品类别分组,计算销售量
).reset_index()
category_sales.to_csv('results/category_sales.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(category_sales)
      category  total_sales  total_quantity
0        Books    279650.98            5903
1     Clothing    453744.32            4887
2  Electronics    552730.76            7566
3         Food    306883.36            5883
4         Home    382538.62            5863

4. 按性别统计客户数量

# 4. 按性别统计客户数量
gender_distribution = customers['gender'].value_counts().reset_index()  # 统计不同性别的客户数量
gender_distribution.columns = ['gender', 'count']  # 重命名列名
gender_distribution.to_csv('results/gender_distribution.csv', index=False)  # 将结果保存为CSV文件,不保存索引

5. 创建年龄分布直方图数据

# 5. 创建年龄分布直方图数据
age_bins = [18, 25, 35, 45, 55, 65, 80]  # 定义年龄分组区间
age_labels = ['18-25', '26-35', '36-45', '46-55', '56-65', '66+']  # 定义年龄分组标签
customers['age_group'] = pd.cut(customers['age'], bins=age_bins, labels=age_labels)  # 将客户年龄分组
age_distribution = customers['age_group'].value_counts().sort_index().reset_index()  # 统计每个年龄组的客户数量
age_distribution.columns = ['age_group', 'count']  # 重命名列名
age_distribution.to_csv('results/age_distribution.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(age_distribution)
  age_group  count
0     18-25    132
1     26-35    349
2     36-45    325
3     46-55    126
4     56-65     21
5       66+      0

6. 计算每个月的销售总额(时间序列分析)

# 6. 计算每个月的销售总额(时间序列分析)
transactions['month'] = transactions['transaction_date'].dt.to_period('M')  # 提取交易日期的月份
monthly_sales = transactions.groupby('month')['amount'].sum().reset_index()  # 按月份分组,计算每个月的销售总额
monthly_sales['month'] = monthly_sales['month'].astype(str)  # 将月份转换为字符串类型
monthly_sales.to_csv('results/monthly_sales.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(monthly_sales)
      month     amount
0   2024-07  120410.93
1   2024-08  163879.27
2   2024-09  147267.93
3   2024-10  168343.63
4   2024-11  159979.17
5   2024-12  180396.79
6   2025-01  161902.65
7   2025-02  147212.28
8   2025-03  170734.04
9   2025-04  168111.73
10  2025-05  177653.05
11  2025-06  163866.35
12  2025-07   45790.22

7. 找出最畅销的10种产品

# 7. 找出最畅销的10种产品
top_products = transactions.groupby('product_id').agg(total_quantity=('quantity', 'sum'),  # 按产品ID分组,计算每种产品的销售总量total_sales=('amount', 'sum')  # 按产品ID分组,计算每种产品的销售总额
).reset_index()
top_products = pd.merge(top_products, products[['product_id', 'category', 'brand']], on='product_id', how='left')  # 将产品信息合并到统计结果中
top_products = top_products.sort_values('total_sales', ascending=False).head(10)  # 按销售总额降序排序,取前10种产品
top_products.to_csv('results/top_products.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(top_products)
    product_id  total_quantity  total_sales     category   brand
38          39             627    132033.66     Clothing  BrandB
36          37             623    103498.99  Electronics  BrandE
15          16             605     92038.65     Clothing  BrandE
26          27             588     87329.76         Home  BrandE
40          41             645     82269.75  Electronics  BrandA
48          49             518     69924.82         Food  BrandD
23          24             659     69419.06  Electronics  BrandA
4            5             684     54473.76  Electronics  BrandD
25          26             606     54412.74  Electronics  BrandE
10          11             654     53850.36  Electronics  BrandD

8. 找出消费最高的10个客户

# 8. 找出消费最高的10个客户
top_customers = customer_spending.sort_values('total_spending', ascending=False).head(10)  # 按总消费金额降序排序,取前10个客户
top_customers = pd.merge(top_customers, customers[['customer_id', 'gender', 'age', 'region']], on='customer_id', how='left')  # 将客户信息合并到统计结果中
top_customers.to_csv('results/top_customers.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(top_customers)
   customer_id  total_spending  gender  age region
0          903         4568.08  Female   23   East
1          763         4421.28    Male   50   West
2          708         4409.81  Female   35  North
3           18         4405.35  Female   35   West
4          841         4353.57    Male   35   East
5          421         4266.48  Female   37   West
6          694         4037.89  Female   43   East
7          870         3987.35  Female   22  North
8          791         3925.87  Female   18   East
9          741         3888.52    Male   38   West

9. 计算不同品牌产品的平均价格

# 9. 计算不同品牌产品的平均价格
brand_prices = products.groupby('brand')['price'].agg(['mean', 'min', 'max', 'std']).reset_index()  # 按品牌分组,计算每种品牌产品的平均价格、最低价格、最高价格和标准差
brand_prices.columns = ['brand', 'avg_price', 'min_price', 'max_price', 'price_std']  # 重命名列名
brand_prices.to_csv('results/brand_prices.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(brand_prices)
    brand  avg_price  min_price  max_price  price_std
0  BrandA  62.249000      24.06     127.55  35.000554
1  BrandB  75.945000      17.22     210.58  70.256401
2  BrandC  48.707143      24.97      71.86  17.941207
3  BrandD  59.621875      14.78     134.99  28.791657
4  BrandE  80.880909      22.71     166.13  51.561905

10. 创建产品类别和性别之间的交叉表

# 10. 创建产品类别和性别之间的交叉表
merged_data = pd.merge(transactions, products, on='product_id', how='left')  # 将交易数据和产品数据按产品ID合并
merged_data = pd.merge(merged_data, customers, on='customer_id', how='left')  # 将合并后的数据和客户数据按客户ID合并
category_gender_crosstab = pd.crosstab(merged_data['category'], merged_data['gender'])  # 创建产品类别和性别之间的交叉表
category_gender_crosstab.to_csv('results/category_gender_crosstab.csv')  # 将结果保存为CSV文件
print(category_gender_crosstab)
gender       Female  Male
category                 
Books           998   964
Clothing        835   803
Electronics    1273  1207
Food           1050   918
Home            976   976

11. 创建产品类别和年龄组之间的交叉表

category_age_crosstab = pd.crosstab(merged_data['category'], merged_data['age_group'])  # 创建产品类别和年龄组之间的交叉表
category_age_crosstab.to_csv('results/category_age_crosstab.csv')  # 将结果保存为CSV文件
print(category_age_crosstab)
age_group    18-25  26-35  36-45  46-55  56-65
category                                      
Books          267    670    623    273     44
Clothing       231    581    499    213     38
Electronics    337    884    796    308     50
Food           269    662    664    254     32
Home           251    709    616    232     39

12. 创建区域和产品类别之间的交叉表

# 12. 创建区域和产品类别之间的交叉表
region_category_crosstab = pd.crosstab(merged_data['region'], merged_data['category'])  # 创建区域和产品类别之间的交叉表
region_category_crosstab.to_csv('results/region_category_crosstab.csv')  # 将结果保存为CSV文件
print(region_category_crosstab)
category  Books  Clothing  Electronics  Food  Home
region                                            
East        474       391          592   467   467
North       448       390          588   463   468
South       472       419          601   485   465
West        568       438          699   553   552

13. 创建性别和区域之间的交叉表

# 13. 创建性别和区域之间的交叉表
gender_region_crosstab = pd.crosstab(customers['gender'], customers['region'])  # 创建性别和区域之间的交叉表
gender_region_crosstab.to_csv('results/gender_region_crosstab.csv')  # 将结果保存为CSV文件
print(gender_region_crosstab)
region  East  North  South  West
gender                          
Female   117    119    133   141
Male     123    121    110   136

14. 计算每个客户的首次购买日期和最近购买日期

# 14. 计算每个客户的首次购买日期和最近购买日期
customer_dates = transactions.groupby('customer_id').agg(first_purchase_date=('transaction_date', 'min'),  # 按客户ID分组,计算每个客户的首次购买日期last_purchase_date=('transaction_date', 'max')  # 按客户ID分组,计算每个客户的最近购买日期
).reset_index()
customer_dates.to_csv('results/customer_dates.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(customer_dates)
     customer_id        first_purchase_date         last_purchase_date
0              1 2024-08-06 16:32:05.579393 2025-03-07 16:32:05.579393
1              2 2024-11-02 16:32:05.579393 2025-07-04 16:32:05.579393
2              3 2024-07-11 16:32:05.579393 2025-05-11 16:32:05.579393
3              4 2024-07-15 16:32:05.579393 2025-07-03 16:32:05.579393
4              5 2024-08-16 16:32:05.579393 2025-07-08 16:32:05.579393
..           ...                        ...                        ...
995          996 2024-07-11 16:32:05.579393 2025-06-24 16:32:05.579393
996          997 2024-08-19 16:32:05.579393 2025-07-06 16:32:05.579393
997          998 2024-08-26 16:32:05.579393 2025-07-05 16:32:05.579393
998          999 2024-08-11 16:32:05.579393 2025-06-23 16:32:05.579393
999         1000 2024-08-01 16:32:05.579393 2025-04-09 16:32:05.579393[1000 rows x 3 columns]

15. 计算客户生命周期价值(CLV)假设为一年

# 15. 计算客户生命周期价值(CLV)假设为一年
clv_data = pd.merge(customer_spending, customer_dates, on='customer_id', how='left')  # 将客户消费数据和购买日期数据按客户ID合并
clv_data['customer_lifetime'] = (clv_data['last_purchase_date'] - clv_data['first_purchase_date']).dt.days / 365  # 计算客户生命周期(年)
clv_data['clv'] = clv_data['total_spending'] / (clv_data['customer_lifetime'] + 0.001)  # 计算客户生命周期价值,避免除零错误
clv_data.to_csv('results/customer_clv.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(clv_data)
     customer_id  total_spending        first_purchase_date  \
0              1         1124.02 2024-08-06 16:32:05.579393   
1              2         1710.33 2024-11-02 16:32:05.579393   
2              3         1595.10 2024-07-11 16:32:05.579393   
3              4         3881.27 2024-07-15 16:32:05.579393   
4              5         3871.16 2024-08-16 16:32:05.579393   
..           ...             ...                        ...   
995          996         1880.70 2024-07-11 16:32:05.579393   
996          997         2683.27 2024-08-19 16:32:05.579393   
997          998         1631.01 2024-08-26 16:32:05.579393   
998          999         2473.05 2024-08-11 16:32:05.579393   
999         1000         2608.60 2024-08-01 16:32:05.579393   last_purchase_date  customer_lifetime          clv  
0   2025-03-07 16:32:05.579393           0.583562  1922.842547  
1   2025-07-04 16:32:05.579393           0.668493  2554.663925  
2   2025-05-11 16:32:05.579393           0.832877  1912.872702  
3   2025-07-03 16:32:05.579393           0.967123  4009.065838  
4   2025-07-08 16:32:05.579393           0.893151  4329.426869  
..                         ...                ...          ...  
995 2025-06-24 16:32:05.579393           0.953425  1970.506509  
996 2025-07-06 16:32:05.579393           0.879452  3047.604904  
997 2025-07-05 16:32:05.579393           0.857534  1899.761141  
998 2025-06-23 16:32:05.579393           0.865753  2853.233607  
999 2025-04-09 16:32:05.579393           0.687671  3787.874207  [1000 rows x 6 columns]

16. 创建一个透视表,显示每个区域、每个类别的销售总额

# 16. 创建一个透视表,显示每个区域、每个类别的销售总额
region_category_pivot = pd.pivot_table(merged_data,values='amount',  # 透视表的值为交易金额index='region',  # 透视表的行索引为区域columns='category',  # 透视表的列索引为产品类别aggfunc='sum',  # 聚合函数为求和fill_value=0  # 缺失值填充为0
)
region_category_pivot.to_csv('results/region_category_pivot.csv')  # 将结果保存为CSV文件
print(region_category_pivot)
category     Books   Clothing  Electronics      Food       Home
region                                                         
East      69158.99  108802.65    128664.17  73067.98   88262.81
North     62821.45  108363.43    130980.59  74564.24   90982.75
South     68916.92  110948.88    136255.84  73532.48   93670.87
West      78753.62  125629.36    156830.16  85718.66  109622.19

17. 创建一个透视表,显示每个月、每个类别的销售总额

# 17. 创建一个透视表,显示每个月、每个类别的销售总额
month_category_pivot = pd.pivot_table(merged_data,values='amount',  # 透视表的值为交易金额index='month',  # 透视表的行索引为月份columns='category',  # 透视表的列索引为产品类别aggfunc='sum',  # 聚合函数为求和fill_value=0  # 缺失值填充为0
)
month_category_pivot.index = month_category_pivot.index.astype(str)  # 将月份索引转换为字符串类型
month_category_pivot.to_csv('results/month_category_pivot.csv')  # 将结果保存为CSV文件
print(month_category_pivot)
category     Books  Clothing  Electronics      Food      Home
month                                                        
2024-07   19049.16  28345.99     32982.40  15546.22  24487.16
2024-08   22482.08  39866.22     44932.19  25444.10  31154.68
2024-09   23453.31  33326.84     42242.67  20403.07  27842.04
2024-10   24327.48  36415.63     44971.30  26200.94  36428.28
2024-11   20299.31  34942.33     46316.72  24822.69  33598.12
2024-12   24097.06  47046.58     50235.43  26123.97  32893.75
2025-01   26473.88  34748.91     42122.97  27490.10  31066.79
2025-02   20271.88  31493.03     40852.26  26059.20  28535.91
2025-03   20973.53  37191.20     48798.25  29035.07  34735.99
2025-04   22417.78  41892.14     45848.84  24966.29  32986.68
2025-05   24946.51  43113.17     58419.63  23434.67  27739.07
2025-06   25288.91  37229.08     41895.60  29361.03  30091.73
2025-07    5570.09   8133.20     13112.50   7996.01  10978.42

18. 创建一个透视表,显示每个区域、每个性别在各个类别上的平均消费

# 18. 创建一个透视表,显示每个区域、每个性别在各个类别上的平均消费
region_gender_category_pivot = pd.pivot_table(merged_data,values='amount',  # 透视表的值为交易金额index=['region', 'gender'],  # 透视表的行索引为区域和性别columns='category',  # 透视表的列索引为产品类别aggfunc='mean',  # 聚合函数为求平均值fill_value=0  # 缺失值填充为0
)
region_gender_category_pivot.to_csv('results/region_gender_category_pivot.csv')  # 将结果保存为CSV文件
print(region_gender_category_pivot)
category            Books    Clothing  Electronics        Food        Home
region gender                                                             
East   Female  140.329458  270.118182   234.613919  159.747362  185.777671Male    151.623590  286.628238   200.062331  152.545305  191.844758
North  Female  139.379052  257.678474   229.761571  151.541577  200.558000Male    140.980886  297.022600   214.836884  171.363604  187.933465
South  Female  143.690119  257.582944   232.432237  152.286984  199.536932Male    148.668227  273.655426   220.863434  150.884807  203.678037
West   Female  132.917729  272.563935   229.317895  149.335281  191.643158Male    144.845751  300.700676   219.072189  161.880280  205.052832

19. 计算每个客户的购买频率(每年购买次数)

# 19. 计算每个客户的购买频率(每年购买次数)
purchase_frequency = transactions.groupby('customer_id').agg(num_transactions=('transaction_id', 'count'),  # 按客户ID分组,计算每个客户的交易次数first_purchase_date=('transaction_date', 'min'),  # 按客户ID分组,计算每个客户的首次购买日期last_purchase_date=('transaction_date', 'max')  # 按客户ID分组,计算每个客户的最近购买日期
).reset_index()
purchase_frequency['customer_lifetime'] = (purchase_frequency['last_purchase_date'] - purchase_frequency['first_purchase_date']).dt.days / 365  # 计算客户生命周期(年)
purchase_frequency['frequency_per_year'] = purchase_frequency['num_transactions'] / (purchase_frequency['customer_lifetime'] + 0.001)  # 计算购买频率(每年购买次数),避免除零错误
purchase_frequency.to_csv('results/purchase_frequency.csv', index=False)  # 将结果保存为CSV文件,不保存索引
print(purchase_frequency)
     customer_id  num_transactions        first_purchase_date  \
0              1                10 2024-08-06 16:32:05.579393   
1              2                 9 2024-11-02 16:32:05.579393   
2              3                11 2024-07-11 16:32:05.579393   
3              4                14 2024-07-15 16:32:05.579393   
4              5                13 2024-08-16 16:32:05.579393   
..           ...               ...                        ...   
995          996                10 2024-07-11 16:32:05.579393   
996          997                11 2024-08-19 16:32:05.579393   
997          998                 9 2024-08-26 16:32:05.579393   
998          999                10 2024-08-11 16:32:05.579393   
999         1000                 8 2024-08-01 16:32:05.579393   last_purchase_date  customer_lifetime  frequency_per_year  
0   2025-03-07 16:32:05.579393           0.583562           17.106836  
1   2025-07-04 16:32:05.579393           0.668493           13.443005  
2   2025-05-11 16:32:05.579393           0.832877           13.191398  
3   2025-07-03 16:32:05.579393           0.967123           14.460968  
4   2025-07-08 16:32:05.579393           0.893151           14.538936  
..                         ...                ...                 ...  
995 2025-06-24 16:32:05.579393           0.953425           10.477516  
996 2025-07-06 16:32:05.579393           0.879452           12.493582  
997 2025-07-05 16:32:05.579393           0.857534           10.482983  
998 2025-06-23 16:32:05.579393           0.865753           11.537307  
999 2025-04-09 16:32:05.579393           0.687671           11.616574  [1000 rows x 6 columns]

20. 分析会员时长与消费金额之间的关系

# 20. 分析会员时长与消费金额之间的关系
customers['membership_days'] = (datetime.now() - customers['membership_date']).dt.days  # 计算会员时长(天)
customer_membership = pd.merge(customers, customer_spending, on='customer_id', how='left')  # 将客户数据和消费数据按客户ID合并
membership_spending_correlation = customer_membership[['membership_days', 'total_spending']].corr()  # 计算会员时长和消费金额之间的相关性
customer_membership.to_csv('results/customer_membership.csv', index=False)  # 将合并后的数据保存为CSV文件,不保存索引
membership_spending_correlation.to_csv('results/membership_spending_correlation.csv')  # 将相关性结果保存为CSV文件
print(membership_spending_correlation)
                 membership_days  total_spending
membership_days         1.000000       -0.008689
total_spending         -0.008689        1.000000
print("数据分析完成,结果已保存到results目录下的CSV文件中。")
数据分析完成,结果已保存到results目录下的CSV文件中。

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

访问Windows服务器备份SQL SERVER数据库

以前没有直接访问过Windows服务器,今天刚一看到的是时候有点懵,竟然下意识的使用SecureCRT远程工具去连了一下,然后领导说,看一下用户名,突然意识到,跟我们平时远程桌面是一样的。 一、 win + R 打开命令窗口 二、 输入 mstsc 三、 输入远程地址 四、点击连接,如果有弹…

C++ 面向对象 - 对象定义方法汇总

C对象定义方法汇总 1. 栈上定义方式 1.1 调用无参构造函数的定义方式 无参构造函数有两种: 默认无参构造函数Demo(){}默认值列表构造函数。Demo():a{1},b{2}{} // 使用初始化列表实现对象定义方式: Demo d; Demo d1{}; // 以下定义方式还调用了拷贝构造…

指尖上的魔法:优雅高效的Linux命令手册

一、Linux基础指令 1. ls ls:对于目录,列出该目录下的所有子目录与文件,对于文件,将列出文件名以及其他信息。 -a:列出目录下的所有文件,包含以.开头的隐藏文件 -l:列出文件的详细信息 -d:将目录…

《磁力下载工具实测:资源搜索+高速下载一站式解决方案》

嘿,朋友们!我是阿灿,今天给大家带来一个超实用的看片神器,特别适合老司机们使用,保证让你眼前一亮!推荐一款比某雷更好用的下载工具,搭配资源搜索神器,轻松获取资源不限速。超强磁力…

Go网络编程基础:网络模型与协议栈概述 - 从理论到实践的完整指南

1. 引言 在当今的互联网时代,网络编程已经成为后端开发的核心技能。Go语言以其出色的并发性能和简洁的语法,在网络编程领域展现出了强大的优势。从Docker、Kubernetes到众多微服务框架,Go已经成为构建高性能网络应用的首选语言之一。 你是否…

Web攻防-SSTI服务端模版注入利用分类语言引擎数据渲染项目工具挖掘思路

知识点: 1、WEB攻防-SSTI-利用分类&功能点 2、WEB攻防-SSTI-利用项目&挖掘思路 SSTI(Server Side Template Injection) 服务器模板注入, 服务端接收了用户的输入,将其作为 Web 应用模板内容的一部分,在进行目标编译渲染的过程中&…

李沐动手学深度学习Pytorch-v2笔记【07自动求导代码实现】

文章目录前言自动求导实现非标量变量的反向传播分离计算Python控制流的梯度计算前言 关于走动求导的理论知识个人有点难以理解,推荐大家去看https://blog.csdn.net/weixin_42831564/article/details/135658138这篇文章,讲的很好。 自动求导实现 impor…

strchr 与 strstr 函数详解

一.strchr - 字符查找函数1.函数原型char *strchr(const char *str, int c);2.核心功能在字符串中查找特定字符的第一次出现位置3.参数说明参数 类型 说明str const char* 要搜索的字符串c int 要查找的字符(自动转换为char)4.返回值…

jakes信道模型

Jakes 模型 前面我们介绍了多径信道合成信号可表示为: r(t)Re{∑i0N(t)−1ai(t)u(t−τi(t))ej2πfc(t−τi(t))ϕDi(t)} r(t)Re \left\{\sum_{i0}^{N(t)-1}a_{i}(t)u(t-\tau_{i}(t))e^{j2\pi f_{c}(t-\tau_{i}(t))\phi_{D_{i}}(t)} \right\} r(t)…

JVM类加载机制解析

什么是类加载器? 类加载器是JVM的核心组件之一,负责将Java字节码文件(.class文件)加载到JVM内存中。由于JVM只能执行二进制字节码,类加载器的作用就是将编译后的.class文件转换为JVM可以理解和执行的格式,使…

用Python和OpenCV从零搭建一个完整的双目视觉系统(二)

本系列文章旨在系统性地阐述如何利用 Python 与 OpenCV 库,从零开始构建一个完整的双目立体视觉系统。 本项目github地址:https://github.com/present-cjn/stereo-vision-python.git 项目架构设计:蓝图、分工与工作流 在上一篇文章中&#…

亿级流量下的缓存架构设计:Redis+Caffeine多级缓存实战

亿级流量下的缓存架构设计:RedisCaffeine多级缓存实战 一、为什么需要多级缓存? 在亿级流量场景下,单纯依赖Redis会遇到三大瓶颈:网络延迟:Redis远程访问通常需要1-5ms,QPS超过10万时成为瓶颈资源成本&…

AI基建还能投多久?高盛:2-3年不是问题,回报窗口才刚开启

高盛表示,尽管AI商业化变现仍处早期阶段,但基于成本削减的第一阶段回报已经显现。预测到2030年AI自动化可为财富500强企业节省约9350亿美元成本。分析师认为,这一早期收益足以支撑当前AI基础设施投资水平,尽管增长率可能放缓。虽然…

【mac】快捷键使用指南

在Mac上,根据选择对象的不同,在选择时移动的方法也有所不同,以下是具体介绍: 移动文件或文件夹:可通过拖放操作移动。打开“访达”(Finder),找到要移动的文件或文件夹,按…

CS144 lab2 tcp_receiver

1. 实验目的 lab2 的目的是实现tcp的接收端。 主要包括两方面 (1) 从发送端接收消息,使用Reassembler聚合字节流(Bytestream) (2)将确认号(ackno)和window size发回对端 …

【论文笔记】A Deep Reinforcement Learning Based Real-Time Solution Policy for the TSP

《基于 DRL 和 DCNN 的实时 TSP 求解策略》IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS, VOL. 24, NO. 6, JUNE 2023一段话总结本文提出了一种基于深度强化学习(DRL) 和深度卷积神经网络(DCNN) 的实时旅行商问题&am…

MMaDA:多模态大型扩散语言模型

集众家之所长,成大一统。普林斯顿大学、北京大学、清华大学、字节跳动的研究者将“文本推理、多模态分析、图像生成”三大方向融合在一个单一扩散模型里,并用恰当的优化策略来提升模型在各个方向的性能。 研究动机 研究人员致力于开发一个能够处理多种模…

容器技术入门与Docker环境部署

容器技术入门与Docker环境部署Docker概述什么是 DockerDocker 的优势Docker 的应用场景Docker 核心概念(1)镜像(2)容器(3)仓库Docker 安装1.关闭系统防火墙和内核2.下载Docker的repo文件3.替换仓库地址4.更新索引文件并安装Docker5.添加国内镜像站6.开启Docker服务7.优化内核参…

【01】MFC入门到精通—— MFC新建基于对话框的项目 介绍(工作界面、资源视图 、类视图)

文章目录1 创建工程2 运行3 工作界面介绍3. 1 类视图 Class View3.2 如何打开 类视图3.3 资源视图1 创建工程 选择菜单项 文件->新建->项目,弹出 “新项目” 对话框。 选择 MFC,点击下一步,然后键入工程名称,本例取名“Add…

2025!在Windows的Python中安装GDAL包(小白能成!)

最近更新 在2025.06.05日,GDAL发布预告:新版本将适配pipeline和向量读写功能。 直到2025.06.25日,最新的版本才算发行出来。 有朋友催我赶紧更新教程,我上次更新是3月份的时候了,恰好是GDAL上一个版本出来的时间。 前…