Python数据分析案例38——我国个人工作总收入影响因素分析

news2024/11/16 9:26:15

案例背景

偶然之间找到了CSFP(中国家庭追踪调查)的数据集,一个很全的家庭调查数据集。所以就想对大家现在最关心的工资和其影响因素做一点分析。

得到的结论还挺有价值的,有符合逻辑的,也有反直觉的。


数据来源

CFPS由北京大学中国社会科学调查中心(ISSS)实施。项目采用计算机辅助调查技术开展访问,以满足多样化的设计需求,提高访问效率,保证数据质量,是北京大学和国家自然基金委资助的重大项目。

中国家庭追踪调查(China Family Panel Studies,CFPS)旨在通过跟踪收集个体、家庭、社区三个层次的数据,反映中国社会、经济、人口、教育和健康的变迁,为学术研究和公共政策分析提供数据基础。

CFPS重点关注中国居民的经济与非经济福利,以及包括经济活动、教育成果、家庭关系与家庭动态、人口迁移、健康等在内的诸多研究主题,是一项全国性、大规模、多学科的社会跟踪调查项目。CFPS样本覆盖25个省/市/自治区,目标样本规模为16000户,调查对象包含样本家户中的全部家庭成员。CFPS在2008、2009两年在北京、上海、广东三地分别开展了初访与追访的测试调查,并于2010年正式开展访问。经2010年基线调查界定出来的所有基线家庭成员及其今后的血缘/领养子女将作为CFPS的基因成员,成为永久追踪对象。CFPS调查问卷共有社区问卷、家庭问卷、成人问卷和少儿问卷四种主体问卷类型,并在此基础上不断发展出针对不同性质家庭成员的长问卷、短问卷、代答问卷、电访问卷等多种问卷类型。

当然这个数据集是经典的经管类的计量软件stata的文件,所以没装stata还不好打不开看它长什么样.....而且数据集没有清洗过,很难直接使用。如图:

1312多个变量,而且很多有缺失值,想从中选择需要的变量还是很困难的。

当然本文会带大家从清洗到整理到分析全流程,都是用python完成的,excel都不需要。python可以直接读取stata、spss等数据软件常用的文件。

需要本文全部代码和CSFP的数据集,还有清洗出来的数据可以参考:CSFP工资收入数据集


代码实现

数据读取

开始还是先导入数据分析常用的四件套

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt 
import seaborn as sns

plt.rcParams ['font.sans-serif'] ='SimHei'               #显示中文
plt.rcParams ['axes.unicode_minus']=False               #显示负号

读取stata文件,直接pandas读取:

# 读取Stata文件的元数据
metadata = pd.io.stata.StataReader('cfps2020person_202306.dta')
# 获取变量标签的字典
variable_labels = metadata.variable_labels()
for var, label in variable_labels.items():
    print(f"Variable '{var}' has label '{label}'")

这样就打印出来的所有的数据变量和其对应的中文标签。

为什么要打印中文....因为只看英文简称我也不知道这个变量代表什么意思....需要从中文来看,然后选择需要的变量标签和对应的名称。

我们需要从中选择自己需要的变量,我大概选了这几种:

a=['工作总收入(元/年)','每周工作时间(小时/周)','雇主性质','雇主是个体工商户','是否有编制','工作地点','工作收入满意度',
 '工作时间满意度','一般工作7的单位/雇主性质','加载变量:受访者性别','加载变量:最近一次调查最高学历','年龄',
 '上哪类初中','上哪类高中','上哪类大专','上哪类本科','读硕士是脱产还是在职'
,'读博士是脱产还是在职','是否小学毕业','是否初中毕业'
,'是否高中毕业','是否大专毕业','是否本科毕业','是否硕士毕业','是否博士毕业','当前婚姻状态',]

然后过滤一下:

filtered_labels = {key: value for key, value in variable_labels.items() if value in a}

读取正式数据

df=pd.read_stata('cfps2020person_202306.dta',convert_categoricals=False).replace('不适用',np.nan)\
.replace(-8,np.nan).replace(-1,np.nan).replace(77,np.nan).replace(-2,np.nan)
df.head()

只展示了前五行,有1312个变量。

自定义一个过滤缺失值的函数,如果某个变量这一列的缺失值达到90%的比例,就删除这个变量。

def remove_columns_with_missing_values(df, threshold):
    """
    删除缺失值达到指定比例的列
    参数:
    df: pandas DataFrame
    threshold: float, 缺失值比例阈值
    """
    # 计算每列的缺失值比例
    missing_ratio = df.isnull().sum() / len(df)
    # 找到缺失比例大于或等于阈值的列
    columns_to_drop = missing_ratio[missing_ratio >= threshold].index
    # 删除这些列
    df_dropped = df.drop(columns=columns_to_drop)
    return df_dropped

过滤选择的变量,删除缺失值的变量。查看信息:

df=df[filtered_labels.keys()]
df1=remove_columns_with_missing_values(df, threshold=0.9)
df1.info(0)

有很多还是有缺失值的,例如qg12,我们看看对应的中文名称:

### 查看对应的中文标签
{key: value for key, value in variable_labels.items() if key in df1.columns}

 

修改一下名称:

df1=df1.set_axis(['年龄','性别','最高学历','婚姻状态','雇主性质','工作地点','工作收入满意度','工作时间满意度','每周工作时间(小时/周)','工作总收入(元/年)'],axis=1)

### 查看每个变量的变量信息

### 查看每个变量的变量信息
for col in df1.columns:
    print(df1[col].value_counts(),end='\n=====================================\n')

对应的是数值,所以我去官网查了每一个数据对应的含义:


受访者性别

  • (1=男;0=女)

最高学历

  • 0.文盲/半文盲 3.小学 4.初中 5.高中/中专/技校/职 6.大专 7.大学本科 8.硕士 9.博士

婚姻状态

  • 1.未婚 2. 有配偶(在婚)3.同居 4.离婚 5.丧偶

雇主性质

    1. 政府部门/党政机关/人民团体 2. 事业单位 3. 国有企业 4. 私营企业/个体工商户 5. 外商/港澳台商企业
  •        6.其他类型企业 7.个人/家庭 8. 民办非企业组织/协会/行会/基金会/村居委会 9. 无法判断

工作地点

    1. 当前居住村/居 2. 当前居住乡/镇/街道的其他村/居 3. 当前居住县/市的其他乡/镇/街道 4. 当前居住市/区的其他县/市
    1. 当前居住省份的其他市/区 6. 境内的其他省份 7. 境外(含港、澳、台) 8. 无固定工作地点

工作收入满意度

    1. 非常不满意 2. 不太满意 3. 一般【不读出】 4. 比较满意 5. 非常满意

工作时间满意度 

    1. 非常不满意 2. 不太满意 3. 一般【不读出】 4. 比较满意 5. 非常满意


数据清洗

简单清洗一下,清洗逻辑是行,如果一行的数据缺失比例达到30%,就删除这一行。

def remove_rows_with_missing_values(df, threshold):
    """
    删除缺失值达到指定比例的行
    参数:
    df: pandas DataFrame
    threshold: float, 缺失值比例阈值
    """
    # 计算每行的缺失值比例
    missing_ratio_per_row = df.isnull().mean(axis=1)
    # 找到缺失比例小于阈值的行
    rows_to_keep = missing_ratio_per_row < threshold
    df_filtered = df[rows_to_keep]
    return df_filtered
df2=remove_rows_with_missing_values(df1,0.3)
df2.info()

数据删除到了只有11381行。

 缺失值填充一下:年龄用均值填充,其他类别变量用众数填充。

# 对'年龄'使用均值进行填充
df2['年龄'].fillna(df2['年龄'].mean(), inplace=True)

# 对其他字段使用众数进行填充
for column in ['性别', '最高学历', '婚姻状态', '雇主性质', '工作地点', '工作收入满意度', '工作时间满意度']:
    mode_value = df2[column].mode()[0]  # 取众数的第一个值,因为众数可能返回多个结果
    df2[column].fillna(mode_value, inplace=True)

对于每周工作时间(小时/周)和 工作总收入(元/年)填充要仔细一点,因为是后面要用的因变量。

填充策略是相似的进行填充,即对于有缺失值的就用 ['性别', '最高学历', '婚姻状态', '雇主性质']一样的组的变量均值进行填充。

def fill_missing_with_group_mean(df, target_column, group_columns):
    """
    使用分组均值填充目标列的缺失值
    参数:
    df: pandas DataFrame
    target_column: str, 要填充缺失值的列名
    group_columns: list, 用于分组的列名列表
    """
    def fill_with_mean(x):
        mean = x.mean()
        if pd.isna(mean):  # 如果均值是NaN,则不进行填充
            return x
        return x.fillna(mean)
    # 计算每个组的均值,并用这个均值填充相应组内的缺失值
    filled_df = df.copy()
    filled_df[target_column] = filled_df.groupby(group_columns)[target_column].transform(fill_with_mean)
    return filled_df

# 应用函数到你的DataFrame
df3= fill_missing_with_group_mean(df2, '工作总收入(元/年)', ['性别', '最高学历', '婚姻状态', '雇主性质'])
df3= fill_missing_with_group_mean(df3, '每周工作时间(小时/周)', [ '性别', '最高学历', '婚姻状态', '雇主性质']).dropna()
df3.info()

现在没有缺失值了。

数据备份一下:data用于分析,df3用于画图。

data=df3.copy()

数据分析

描述性统计画图

由于里面都是数值变量,我们不能直观的查看其中文含义,所以要映射一下:

gender_map = {1: '男', 0: '女'}
education_map = {1: '文盲', 2: '半文盲', 3: '小学', 4: '初中', 5: '高中/中专/技校/职', 
                 6: '大专', 7: '大学本科', 8: '硕士', 9: '博士'}
marital_status_map = {1: '未婚', 2: '有配偶(在婚)', 3: '同居', 4: '离婚', 5: '丧偶'}
employer_nature_map = {1: '政府部门/党政机关/人民团体', 2: '事业单位', 3: '国有企业', 
                       4: '私营企业/个体工商户', 5: '外商/港澳台商企业', 6: '其他类型企业', 
                       7: '个人/家庭', 8: '民办非企业组织/协会/村居委会', 9: '无法判断'}
work_location_map = {1: '当前居住村/居', 2: '当前居住乡/镇/街道的其他村/居', 
                     3: '当前居住县/市的其他乡/镇/街道', 4: '当前居住市/区的其他县/市',
                     5: '当前居住省份的其他市/区', 6: '境内的其他省份', 7: '境外(含港、澳、台)', 
                     8: '无固定工作地点'}
satisfaction_map = {1: '非常不满意', 2: '不太满意', 3: '一般', 4: '比较满意', 5: '非常满意'}

# 映射标签
df3['性别'] = df3['性别'].map(gender_map)
df3['最高学历'] = df3['最高学历'].map(education_map)
df3['婚姻状态'] = df3['婚姻状态'].map(marital_status_map)
df3['雇主性质'] = df3['雇主性质'].map(employer_nature_map)
df3['工作地点'] = df3['工作地点'].map(work_location_map)
df3['工作收入满意度'] = df3['工作收入满意度'].map(satisfaction_map)
df3['工作时间满意度'] = df3['工作时间满意度'].map(satisfaction_map)

然后对年龄,收入,时间,这三个数字变量画箱线图:
 

# 1*3的箱线图
plt.figure(figsize=(12,5),dpi=128)  # 设置画布大小
plt.subplot(1, 3, 1)  # 第一个子图
sns.boxplot(y=df3['年龄'])
plt.title('年龄分布')

plt.subplot(1, 3, 2)  # 第二个子图
sns.boxplot(y=df3['每周工作时间(小时/周)'])
plt.title('每周工作时间分布')

plt.subplot(1, 3, 3)  # 第三个子图
sns.boxplot(y=df3['工作总收入(元/年)'])
plt.title('工作总收入分布')
plt.tight_layout()
plt.show()

 

可以看到年龄中位数大概在38左右(中国人不再年轻),有一些极大值,说明问卷调查了很多老人。

工作时间也是,中位数在51小时附近。(这和韩国不是一模一样吗....) 中国人每周工作时间还是太长了,而且也有很多异常值在100小时以上的。。那不是每天要工作15小时以上??.........

工作总收入分布,中位数在3.6w附近。说明绝大多数中国人月收入不足3000, 并且也有很多异常值,年收入到10W以上的已经可以说超越了很多人了,但是收入分布明显极大值很多,典型的右偏分布,贫富差异较大。

对性别,最高学历,婚烟状况画饼图:

gender_counts = df3['性别'].value_counts()
education_counts = df3['最高学历'].value_counts()
marital_status_counts = df3['婚姻状态'].value_counts()

# Create subplots
fig, axes = plt.subplots(1, 3, figsize=(12,5),dpi=128)

# Gender distribution pie chart
axes[0].pie(gender_counts, labels=gender_counts.index, autopct='%1.1f%%', startangle=90)
axes[0].set_title('性别分布')
axes[0].axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.

# Education level distribution pie chart
axes[1].pie(education_counts, labels=education_counts.index, autopct='%1.1f%%', startangle=90)
axes[1].set_title('最高学历分布')
axes[1].axis('equal')

# Marital status distribution pie chart
axes[2].pie(marital_status_counts, labels=marital_status_counts.index, autopct='%1.1f%%', startangle=90)
axes[2].set_title('婚姻状态分布')
axes[2].axis('equal')

# Show plot
plt.tight_layout()
plt.show()

 调查中的男性偏多,也可能反映了我国男女比例不平衡的问题。由于是家庭数据,所以已婚人士还是更多,在学历上,大部分人都是初中和高中,本科研究生博士太少,纯文盲也少。


其余变量画柱状图:

plt.figure(figsize=(10,7),dpi=128)  # 新的画布
plt.subplot(2, 2, 1)  # 第一个子图
sns.countplot(x='雇主性质', data=df3)
plt.xticks(rotation=90)
plt.title('雇主性质分布')

plt.subplot(2, 2, 2)  # 第二个子图
sns.countplot(x='工作地点', data=df3)
plt.xticks(rotation=90)
plt.title('工作地点分布')

orders=['非常不满意', '不太满意', '一般', '比较满意', '非常满意']
plt.subplot(2, 2, 3)  # 第三个子图
sns.countplot(x='工作收入满意度', data=df3,order=orders)
#plt.xticks(rotation=20)
plt.title('工作收入满意度')

plt.subplot(2, 2, 4)  # 第四个子图
sns.countplot(x='工作时间满意度', data=df3,order=orders)
#plt.xticks(rotation=20)
plt.title('工作时间满意度')

plt.tight_layout()  # 自动调整

首先是雇主单位,绝大多数人都是私企,然后从业最多的是国企。

工作地点来看,大部分人都会选择和自己附近的的市和县工作。

工作收入和时间满意度来看,大部分人还是比较满意的,一般和不太满意的人也较多。非常不满意的人较少。


我们下面分组聚合分析一下,我们来看看对收入满意程度不一样的人们的收入平均水平式怎么样的:(一行代码就能得到分析的图表的写法还是值得吹嘘一些)

df3.groupby(['工作收入满意度']).mean().loc[orders,:].style.bar(align='mid', color=['#d65f5f', '#5fba7d'])

可以看到,对工资越满意的人一般工资越高。而且工作时间也越少。

df3.groupby(['工作时间满意度']).mean().loc[orders,:].style.bar(align='mid', color=['#491256', '#525a99'])

可以看到,对工作时间越满意的人一般工作时间也越少,工作收入也较多。

我们再来看看不同雇主性质下的工作收入情况:

df3.groupby(['雇主性质']).mean().sort_values('工作总收入(元/年)').style.bar(align='mid', color=['#491256', '#882288'])

我按照工作收入高低排了个序,虽然均值方法可能会受到异常值的影响,但是它还是充分的反映了数据的信息:

工资收入角度来看,个人家庭最低,然后是民间的一些组织,再就是绝大多数人就业的私企。

后面依次是政府部门,国有企业,事业单位,然后再才是外企。其他类型企业工资收入最高,其他企业指的是啥我也不太了解,可能是自己开公司的老板吧。

很明显嘛,事业单位工资>=国企>政府部门>私企。更别说体制内还有很多隐形的工资补贴福利等。

工作时间的角度来看也是私企遥遥领先....996文化不是没道理的,工作时间:私企远大于>国企>政府部门>=事业单位。

逃离私企进入体制内是有原因的,工作时间少一些,工资还高一些,所以啊,宇宙的尽头是编制。

性别和收入的影响

df3.groupby(['性别']).mean().sort_values('工作总收入(元/年)').style.bar(align='mid', color=['#491256', 'yellow'])

可能中国很多女性还是家庭主妇,所以男性工资普遍比女性高,工作时间也久一点。也侧面反映了文化的问题和职场可能存在的性别歧视。

学历对工资影响

df3.groupby(['最高学历']).mean().sort_values('工作总收入(元/年)').style.bar(align='mid', color=['#491256', 'tomato'])

没什么好说的,学历越高工资越高,本科平均7.8w一年,硕士平均13w一年,博士也才不到15w一年,要知道博士也起码是3年4年起步,所以从性价比来看,读博士工资增长没有读硕士那么明显。

值得一提的是学历越高,工作时间也越少,但是到博士这里有比本科生时间还长。(所以 '读博就是当牛马' 明白这句话的含义了吧.......) 

婚姻状况和工作

df3.groupby(['婚姻状态']).mean().sort_values('工作总收入(元/年)').style.bar(align='mid', color=['#491256', 'skyblue'])

 

丧偶和离婚的人年龄都比较大,工资也不高。未婚平均年龄最小,25岁,已婚平均年龄42,平均工资也就比未婚多一点点。最离谱的是同居但不结婚的人群平均年龄在36,而且收入超级高。。遥遥领先结婚和没结婚的,看来有钱的单身享乐主义还是很多的....


 回归分析

 查看变量名称

data.columns

选择自变量X和因变量y,

我们选择 ['年龄', '性别', '最高学历', '婚姻状态', '雇主性质', '工作地点',  '每周工作时间(小时/周)']作为X,研究他们对 '工作总收入(元/年)'  作为y 的影响

import statsmodels.api as sm
X = data.drop(['工作总收入(元/年)','工作收入满意度', '工作时间满意度'], axis=1)
y = data['工作总收入(元/年)']

# 因为使用的是 OLS 回归,需要添加常数项
X = sm.add_constant(X)
# 创建模型并拟合
model = sm.OLS(y, X).fit()

# 打印结果
model.summary()

 

直接上分析和结论吧:(我懒得打字,就gpt写的....)

模型的解释力:

R-squared 值为0.193,说明模型能解释目标变量(工作总收入)19.3%的变异性。虽然这个值不是非常高,但对于社会科学和经济学数据来说是常见的,因为人类行为和经济活动通常受到多种因素的影响。 Adj. R-squared 也是0.193,这意味着在考虑自由度(模型复杂度)之后,模型的解释力基本没有变化。

模型整体的显著性:

F-statistic 为388.6,与之对应的 Prob (F-statistic) 几乎为0(通常表示小于0.01),这表明模型整体是统计显著的,即至少有一个预测变量对目标变量有显著影响。

各个变量的影响:
  • 年龄: 系数为-62.4599,p值为0.043,表明年龄与工作总收入呈负相关,且这种关系是统计显著的。这意味着随着年龄的增长,工作总收入可能会略有下降。
  • 性别: 系数为16360,p值接近0,显示性别对工作总收入有显著的正影响。性别变量是以男性为1女性为0,这意味着男性的平均工作总收入比女性高。
  • 最高学历: 系数为12250,p值接近0,表示最高学历水平对工作总收入有显著正影响,即教育水平越高,工作总收入越高。
  • 婚姻状态: 系数为2681.2187,p值为0.000,说明婚姻状态对工作总收入有正面影响。
  • 雇主性质: 系数为-1539.1501,p值接近0,表明雇主性质与工作总收入呈负相关,即某些雇主性质的工作可能比其他类型的工作收入要低。
  • 工作地点: 系数为989.9821,p值接近0,显示工作地点对工作总收入有显著的正影响。
  • 每周工作时间(小时/周): 系数为-9.6121,但p值为0.592,表明每周工作时间与工作总收入之间没有显著的关系。
模型诊断:

Durbin-Watson 统计量为1.738,接近2,表明残差之间没有明显的自相关。 Omnibus 和 Jarque-Bera 测试的p值接近0,表明残差不符合正态分布,这在大样本中很常见,但可能影响某些统计测试的有效性。 Skewness 和 Kurtosis 表示残差分布的偏度和峰度,这里显示有很高的偏度和峰度,说明数据可能有异常值或者分布不均。


结论

(作者补充结论)

  • 这个模型揭示了性别、最高学历、婚姻状态、雇主性质和工作地点与个人的工作总收入有显著相关性。
  • 值得注意的是,性别和最高学历对收入的正面影响尤为显著,这可能反映了教育程度和性别差异在职场上的重要性。
  • 其中对每个变量的结论为:
    • 年龄变量 刚好迈过显著性的门槛,也就是年龄增长,工作收入会略微下降。
    • 男性比女性在职场上拥有更高的平均收入
    • 学历更高的人工作收入越高。
    • 结婚的人比没结婚的人工作收入更高(ps:没收入的人当然不敢结婚)
    • 雇主性质系数为负,意味着你的工作单位如果离政府部门国企事业单位越来越远,越来越民间化,那么你的工资是越来越低的。(政府部门国企事业单位的工资是最高的(而且还没算福利什么)) 
    • 事业单位工资>=国企>政府部门>私企。更别说体制内还有很多隐形的工资补贴福利等。工作时间的角度来看也是私企遥遥领先....996文化不是没道理的,工作时间:私企远大于>国企>政府部门>=事业单位。逃离私企进入体制内的问候潮流是有原因的,工作时间少一些,工资还高一些,所以啊,宇宙的尽头是编制。
    • 工作地点为正显著性,意味着你去的地方平台越大,工资会越高。
    • 工作时间是最反直觉的,居然不显著.说明工作时间长的打工人并没有得到更高的工资。而且系数还是负数(细品...)
  • 并且工作时长对工资的影响居然不具备显著性,说明现在工作时长多的人得不到更高工资的回报
  • 然而,模型的整体解释力相对有限,这提示我们在理解工作总收入时还有其他未考虑的因素。
  • 此外,数据的偏度和峰度表明,在进行回归分析时可能需要考虑数据转换或其他方法来处理异常值和非正态分布的问题。

 后记

工作的收入是大家都很关注的东西,所以我觉得本研究也具有一定的社会意义。

这只是用这个数据集做的很简单和粗糙的一个分析哈,用的是最简单的回归分析模型和一点描述性统计方法。麻烦在数据处理的部分,其实我很多位置都偷懒了.....包括结论分析也没写得很深入,(再深入了就不能说了.....),但是这个流程和结论分析发个C刊写个本科毕业论文还是没问题的。

改进的地方,例如可以对年龄或者工作时间等数值变量进行分区处理然后再分组聚合研究,婚姻状况这个变量也和数值含义不是很对应。填充缺失值的清洗策略有待商榷,还可以做得更好。回归模型的拟合优度只有19,所以肯定还有超级多的变量可以纳入模型考虑。

并且也没有对回归模型做一些检验等等,也没有探究多重共线性,残差正态性等等问题,具体可以在CSFP里面找更多的变量,做多阶段最小二乘,引入工具变量,使用因果检验等手段和高级模型进行处理和改进。


创作不易,看官觉得写得还不错的话点个关注和赞吧,本人会持续更新python数据分析领域的代码文章~

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

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

相关文章

element loading遮罩层添加按钮

<el-table v-loading"loadingText" element-loading-text"拼命加载中" :data"tableData" :tableColumn"tableColumn" :span-method"objectSpanMethod" border :cell-style"cellStyle" :header-cell-style"…

现代信号处理学习笔记(三)信号检测

通过观测数据判断信号是否存在&#xff0c;这一问题称为信号检测。 目录 前言 一、统计假设检验 1、信号检测的基本概念 2、信号检测理论测度 比率测度 概率测度 3、决策理论空间 二、概率密度函数与误差函数 1、概率密度函数 2、误差函数与补余误差函数 三、检测概…

第二证券|飞行汽车最大订单诞生,万亿级产业待起飞!概念股早盘大涨

开年以来&#xff0c;飞翔轿车赛道利好不断。 飞翔轿车草创公司斩获大订单 据媒体报道&#xff0c;美国飞翔轿车草创公司Alef Aeronautics表明&#xff0c;其电动笔直起降&#xff08;eVTOL&#xff09;飞翔器的预定最近创下了新纪录&#xff0c;订单量已到达2850份。埃隆马斯…

Cesium绘制带有方向的线

export const MAP_3D_BEGIN_CALC (lineStringData, geoData) > {// 画方向线map.entities.add({name: uav-tmp-line,polyline: {positions: Cesium.Cartesian3.fromDegreesArray(lineStringData),material: new Cesium.PolylineArrowMaterialProperty(Cesium.Color.RED),//…

windows下tensorflow-gpu2.5+cudn11.2+cudnn8.1环境配置

1.下载visualStidio2019&#xff08;cudn要用到&#xff09; 要下载2019版本&#xff0c;2022好像不很适配&#xff0c;cudn11.2以上的版本或许可以尝试 visualstidio官网是2022版本&#xff0c;找2019的下载Visual Studio 2019 版本 16.11 发行说明 | Microsoft Learn 勾选…

【C语言】Leetcode 206.反转链表

博主主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《Leetcode》 题目 解决思路 思路一&#xff1a;翻转链表 struct ListNode* reverseList(struct ListNode* head) {if(head NULL){return NULL;}struct ListNode* n1 NULL,*n2 head,*n3 n2 -> next;while(…

ChatGPT Plus 如何开启插件

ChatGPT Plus 如何开启插件 购买完 ChatGPT Plus 会员之后&#xff0c;需要手动开启才能使用 GPT 的插件和 Code interpreter服务。 ​ 具体步骤如下&#xff1a; 1. 进入设置 点击左下角个人邮箱的位置&#xff0c;在弹窗中选择 Settings &Beta 2. 开启选项 在设置选…

紫光展锐T618_4G安卓核心板方案定制

紫光展锐T618核心板是一款采用纯国产化方案的高性能产品&#xff0c;搭载了开放的智能Android操作系统&#xff0c;并集成了4G网络&#xff0c;支持2.5G5G双频WIFI、蓝牙近距离无线传输技术以及GNSS无线定位技术。 展锐T618核心板应用旗舰级 DynamlQ架构 12nm 制程工艺&#x…

以线缆行业为例,工业智能网关的实际应用及其带来的变革-天拓四方

工业智能网关是一种集数据采集、传输、处理和分析于一体的智能化设备。它能够实现对工业现场各种传感器、执行器等设备的数据进行实时采集&#xff0c;并通过网络传输到云端或本地数据中心进行分析处理。同时&#xff0c;工业智能网关还具备边缘计算能力&#xff0c;能够在本地…

Domain Adaptation Vs. Prompt-Tuning:能否用域自适应解决大模型提示学习问题?

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 作者简介 李江梦&#xff0c;中国科学院软件研究所天基综合信息系统全国重点实验室助理研究员 论文简介 今天介绍的是被机器学习领域顶级学术会议ICLR 2024接收的论文&#xff1a;BayesPrompt: Prompting Large…

国创证券|AI手机PC概念拉升,福蓉科技4连板,思泉新材大涨

AI手机PC概念大幅走高&#xff0c;到发稿&#xff0c;思泉新材涨近15%&#xff0c;盘中一度涨停&#xff1b;道明光学、福蓉科技均涨停&#xff0c;诚迈科技涨近8%&#xff0c;亿道信息涨逾6%。 值得注意的是&#xff0c;福蓉科技已接连4个交易日涨停。公司4日晚间发布危险提示…

Qt 实现橡皮擦拭显示图片

1.简介 在一些游戏中看见类似解密破案的效果&#xff0c;使用手触摸去擦拭图片上的灰尘&#xff0c;然后显示最终的图片&#xff0c;所以也想试试Qt实现的效果。大家有自己想做的效果&#xff0c;都可以尝试。 以下是效果展示图。 可以控制橡皮擦的大小&#xff0c;进行擦拭…

nginx 配置404 及 nginx demo

郭永坤123/nginx-demo nginx demo&#xff1a; 包含 &#xff1a; 负载均衡 自定义conf 反向代理

基于Springboot的助农管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的助农管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

Linux系统使用宝塔面板安装MySQL服务并实现公网远程访问本地数据库【内网穿透】

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cp…

typedef定义结构体--声明结构体变量--指向该类型的指针

// 结构体指针.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 // //#define _CRT_SECURE_NO_WARNINGS //在C或C程序中&#xff0c;#define _CRT_SECURE_NO_WARNINGS 是一个预处理指令&#xff0c; //用于在编译时禁止特定的安全警告。这些警告通常与使…

#QT(程序打包)

1.IDE&#xff1a;QTCreator 2.实验&#xff1a;打包到windows&#xff08;exe文件&#xff09; 3.记录&#xff1a; &#xff08;1&#xff09;切换工厂到"release"&#xff0c;release模式基本没有调试信息&#xff0c;比较精简&#xff0c;debug模式有很多调试信…

第1章:绪论 1.1数据库系统概述

文章目录 1.1 数据库系统概述1.1.1 数据库的4个基本概念1.1.2 数据管理技术的产生和发展1.1.3 数据库系统的特点 1.1 数据库系统概述 1.1.1 数据库的4个基本概念 数据(Data) 是数据库中存储的基本对象 数据的定义&#xff1a;描述事物的符号记录 数据的种类&#xff1a;文本、…

京津冀光伏展

京津冀光伏展是中国在京津冀地区举办的一项光伏产业展览活动。该展览旨在展示京津冀地区光伏产业的最新发展成果&#xff0c;促进光伏行业的交流与合作&#xff0c;推动光伏产业的可持续发展。 光伏产业是指利用太阳能将光能转化为电能的产业。作为一种清洁能源&#xff0c;光伏…

文章置顶功能的测试用例应该怎么写?

写文章置顶功能的测试用例时&#xff0c;可以考虑以下几个方面&#xff1a; 一、基本功能测试&#xff1a; 检查是否能够成功将文章置顶。 验证置顶后的文章是否显示在顶部位置。 测试取消置顶功能是否正常。 二、多种状态测试&#xff1a; 置顶一篇已发布的文章。 置顶一篇…