数据分析报告练习作业

该数据集为日本1960年到2022年间的基建领域的投资数据,包含以下特征:

年份
价值
总计
建筑总计
住宅建筑
政府住宅建筑
私人住宅建筑
非住宅建筑
政府非住宅建筑
私人非住宅建筑
私人非住宅建筑(矿业和工业)
私人非住宅建筑(其他)
建筑维修(翻新或改造)
政府建筑维修
私人建筑维修
土木工程总计
政府土木工程
政府公共项目
政府其他土木工程
私人土木工程
重复总计(政府)
重复总计(私人)
重复建筑(政府)
重复建筑(私人)
重复土木工程(政府)
重复土木工程(私人)
私人非住宅建筑(非住宅建筑和土木工程)

#导入可视化库和计算库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
from sklearn.linear_model import LogisticRegression

from sklearn import preprocessing 
import matplotlib.pyplot as plt
import gc
import os
import random

import numpy as np
import pandas as pd
import seaborn as sns

import warnings
warnings.filterwarnings('ignore')


#可视化
from pyecharts import options as opts
from pyecharts.charts import *
from pyecharts.components import Table
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ThemeType,SymbolType,ChartType

from pyecharts.charts import Line
from pyecharts.charts import Bar
from pyecharts.charts import Pie
from pyecharts.charts import Map

from pyecharts.charts import Sankey

from pyecharts.globals import ChartType
from pyecharts.commons.utils import JsCode
from pyecharts import options as opts
import warnings
warnings.filterwarnings('ignore')
#模型训练
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split, KFold, GridSearchCV
from sklearn.metrics import accuracy_score, classification_report
import xgboost as xgb
import lightgbm as lgb
from sklearn.metrics import confusion_matrix, classification_report
import itertools
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM
data= pd.read_csv(r"/home/mw/input/12435156345/日本建筑行业投资数据集.csv")
#用info函数查看数据情况
data.info()

# 描述性统计
summary_stats = data.describe()

# 展示描述性统计
summary_stats

通过这一步,我们能够了解数据的基本信息,如数据的大小、列的名称、数据类型等。

数据清洗与预处理

在实际的分析中,数据清洗是至关重要的一步,包括处理缺失值、重复值和格式不一致的问题:

# 检查缺失值
print(data.isnull().sum())

# 处理缺失值
data.fillna(0, inplace=True)  # 使用0填充缺失值(根据需要也可以使用其他方法)

# 确保数据类型正确
data['Year'] = data['Year'].astype(int)
data['Total'] = data['Total'].astype(float)
data=data[data['Value'] == 'real'].copy()

这一步确保数据完整且一致,为后续的分析打好基础。

探索性数据分析(EDA)

在探索性分析中,我们需要回答我们的研究目标,结合该数据集,我们可以总结以下目标:

投资的总趋势是什么?
各个子类别(如住宅、非住宅、土木工程等)的投资有何变化?
政府与私营部门的投资占比如何?

# 绘制年度总投资趋势图
plt.figure(figsize=(10, 6))
plt.plot(data['Year'], data['Total'], marker='o')
plt.title('年度投资总趋势')
plt.xlabel('年份')
plt.ylabel('总投资额')
plt.grid(True)
plt.show()

# 按年份汇总总投资额
annual_investment = data.groupby('Year')['Total'].sum()

# 绘制年度趋势图
plt.figure(figsize=(10, 6))
plt.plot(annual_investment.index, annual_investment.values, marker='o')
plt.title('年度投资趋势')
plt.xlabel('年度')
plt.ylabel('总投资额t')
plt.grid(True)
plt.show()

通过这张图表,我们能够直观地看到不同年份的投资变化趋势,识别出投资高峰期和低谷期。

各投资类别的趋势分析

# 分析建筑工程和土木工程的投资变化
plt.figure(figsize=(12, 8))
plt.plot(data['Year'], data['Architecture_Total'], label='建筑投资', marker='o')
plt.plot(data['Year'], data['Civil Engineering_Total'], label='基础建设投资', marker='o')
plt.title('分类投资总趋势')
plt.xlabel('年份')
plt.ylabel('总投资额')
plt.legend()
plt.grid(True)
plt.show()

这张图表展示了建筑工程和基础建设的投资变化情况,帮助我们理解不同领域的投资重心。

政府与私营部门投资对比分析

# 政府与私营部门在总投资中的占比
government_investment = data['Repeated_Total_Government']
private_investment = data['Repeated_Total_Private']

# 绘制堆叠柱状图
plt.figure(figsize=(12, 8))
plt.bar(data['Year'], government_investment, label='政府投资')
plt.bar(data['Year'], private_investment, bottom=government_investment, label='私人投资')
plt.title('政府投资 vs 私人投资')
plt.xlabel('年份r')
plt.ylabel('投资总额')
plt.legend()
plt.grid(True)
plt.show()

这张图展示了政府和私营部门在总投资中的占比及变化,能够帮助我们分析公共项目与私营项目的投资结构。

不同领域的投资额对比

 

# 建筑工程投资中的政府与私营占比
arch_gov_investment = data[['Year', 'Architecture_Total', 'Repeated_Architecture_Government']].groupby('Year').sum()
arch_private_investment = data[['Year', 'Architecture_Total', 'Repeated_Architecture_Private']].groupby('Year').sum()

arch_total_investment = arch_gov_investment['Architecture_Total']
arch_gov_percentage = (arch_gov_investment['Repeated_Architecture_Government'] / arch_total_investment) * 100
arch_private_percentage = (arch_private_investment['Repeated_Architecture_Private'] / arch_total_investment) * 100

# 土木工程投资中的政府与私营占比
civil_gov_investment = data[['Year', 'Civil Engineering_Total', 'Repeated_Civil Engineering_Government']].groupby('Year').sum()
civil_private_investment = data[['Year', 'Civil Engineering_Total', 'Repeated_Civil Engineering_Private']].groupby('Year').sum()

civil_total_investment = civil_gov_investment['Civil Engineering_Total']
civil_gov_percentage = (civil_gov_investment['Repeated_Civil Engineering_Government'] / civil_total_investment) * 100
civil_private_percentage = (civil_private_investment['Repeated_Civil Engineering_Private'] / civil_total_investment) * 100

# 可视化展示建筑工程和土木工程的投资占比
plt.figure(figsize=(14, 8))

# 基建领域
plt.subplot(2, 1, 1)
plt.plot(arch_gov_percentage.index, arch_gov_percentage, label='Government (Architecture)', color='blue')
plt.plot(arch_private_percentage.index, arch_private_percentage, label='Private (Architecture)', color='orange')
plt.title('建筑领域政府投资 VS 私人投资')
plt.xlabel('Year')
plt.ylabel('Percentage (%)')
plt.legend()
plt.grid(True)

# 土木工程
plt.subplot(2, 1, 2)
plt.plot(civil_gov_percentage.index, civil_gov_percentage, label='Government (Civil Engineering)', color='green')
plt.plot(civil_private_percentage.index, civil_private_percentage, label='Private (Civil Engineering)', color='red')
plt.title('基建领域政府投资 VS 私人投资')
plt.xlabel('Year')
plt.ylabel('Percentage (%)')
plt.legend()
plt.grid(True)

plt.tight_layout()
plt.show()

 例如,在非住宅建筑中,分析政府与私营部门在不同子领域(如采矿、工业等)的投资占比。

# 非住宅建筑中各子领域的投资占比分析
non_residential_gov_investment = data[['Year', 'Architecture_Non Residential', 'Architecture_Non Residential_Government']].groupby('Year').sum()
non_residential_private_investment = data[['Year', 'Architecture_Non Residential', 'Architecture_Non Residential_Private']].groupby('Year').sum()

non_residential_total_investment = non_residential_gov_investment['Architecture_Non Residential']
non_residential_gov_percentage = (non_residential_gov_investment['Architecture_Non Residential_Government'] / non_residential_total_investment) * 100
non_residential_private_percentage = (non_residential_private_investment['Architecture_Non Residential_Private'] / non_residential_total_investment) * 100

# 可视化展示非住宅建筑中政府与私营部门的投资占比
plt.figure(figsize=(12, 6))
plt.plot(non_residential_gov_percentage.index, non_residential_gov_percentage, label='Government (Non-Residential Architecture)', color='purple')
plt.plot(non_residential_private_percentage.index, non_residential_private_percentage, label='Private (Non-Residential Architecture)', color='brown')
plt.title('非住宅建筑中政府与私营部门的投资占比')
plt.xlabel('Year')
plt.ylabel('Percentage (%)')
plt.legend()
plt.grid(True)
plt.show()

 

机器学习分析

我们想要根据不同投资类型(如住宅、非住宅、土木工程等)的投资额将市场进行分类:

from sklearn.cluster import KMeans
from sklearn.preprocessing import StandardScaler

# 选择用于聚类分析的列
cluster_data = data[['Architecture_Residential', 'Architecture_Non Residential', 'Civil Engineering_Total']]
cluster_data.fillna(0, inplace=True)  # 填补缺失值

# 数据标准化
scaler = StandardScaler()
scaled_cluster_data = scaler.fit_transform(cluster_data)

# 使用K-means进行聚类分析
kmeans = KMeans(n_clusters=3)  # 假设我们分为3类
kmeans.fit(scaled_cluster_data)
labels = kmeans.labels_

# 将聚类结果添加回原数据
data['Cluster'] = labels

# 可视化聚类结果
plt.figure(figsize=(10, 6))
plt.scatter(data['Architecture_Residential'], data['Architecture_Non Residential'], c=labels, cmap='viridis')
plt.xlabel('Residential Architecture Investment')
plt.ylabel('Non Residential Architecture Investment')
plt.title('K-means Clustering of Investment Types')
plt.show()

 

数据建模与预测

如果需要预测未来几年的投资趋势,可以使用回归模型等进行分析。回归分析是最经典的预测模型之一,在基建投资分析中可以用于预测某些关键变量(如总投资额)与其他因素(如年份、政策变化、市场条件)的关系。 我们使用前三年的数据作为特征,预测后续的数据。

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 假设我们已经加载了数据,并且清洗完毕
# 这里以“Total”列为目标变量

# 构造滞后特征
data['lag_1'] = data['Total'].shift(1)
data['lag_2'] = data['Total'].shift(2)
data['lag_3'] = data['Total'].shift(3)

# 删除缺失值(因为前几年的滞后特征会有缺失)
data = data.dropna()

# 特征和目标变量
X = data[['lag_1', 'lag_2', 'lag_3']]  # 使用前3年的投资作为特征
y = data['Total']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f'Mean Squared Error: {mse}')
print(f'R-squared: {r2}')

# 可视化预测结果
import matplotlib.pyplot as plt

plt.figure(figsize=(10, 6))
plt.plot(data['Year'][-len(y_test):], y_test, label='实际投资额', marker='o')
plt.plot(data['Year'][-len(y_test):], y_pred, label='预测投资额', marker='o')
plt.title('实际 vs 预测投资总额')
plt.xlabel('年份')
plt.ylabel('总投资额')
plt.legend()
plt.grid(True)
plt.show()

 

结论与建议
通过以上分析,可以得出以下关键结论:

政府与私营部门的总体投资结构:政府投资在特定年份中有显著的占比(如在经济危机或重大基础设施建设时期),而私营部门在某些年份则表现出更高的活跃度(如市场景气时期)。
不同投资领域的投资结构:建筑工程中,政府投资往往集中在公共住宅和基础设施建设,而私营部门则更多关注商业、工业项目。土木工程中,政府投资占比更高,主要用于公共设施建设。
细分类别的市场主导性:在非住宅建筑中,私营部门在工业和商业投资方面占据主导,而政府则主要负责公共项目和特定政策驱动的投资

资料下载

 

 

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python数据分析作业是使用Python编程语言进行大数据分析的任务。在这个作业中,学生需要运用Python的各种库和工具来处理和分析大规模的数据集。 首先,学生需要了解数据分析的基本概念和技术,以及Python编程语言的基础知识。他们需要学会如何使用Python的数据处理库,例如Pandas和NumPy,来读取、清洗和转换大数据集。 接下来,学生将学习如何使用Python的数据可视化库,例如Matplotlib和Seaborn,来创建图表和可视化工具,以便更好地理解和解释数据集中的模式和趋势。这对于他们能够进行有意义的数据分析报告至关重要。 此外,学生还需要学习如何使用Python的机器学习和统计建模库,例如Scikit-learn和Statsmodels,来构建预测模型和进行统计分析。这些模型和分析将帮助他们从数据中发现有用的信息和洞察,并支持他们在基于数据的决策和策略制定中做出明智的选择。 最后,学生需要通过实际动手完成各种练习和项目,以应用他们所学的知识和技能。这些项目可能涉及到数据集的获取和清理、数据的可视化和探索、模型的构建和评估,以及最终的报告和展示。 总之,Python数据分析作业是一个全面的任务,要求学生掌握Python编程语言和数据分析技术的基础,并能够将它们应用于实际的大规模数据集中。通过完成这些作业,学生将能够提高他们的数据分析和问题解决能力,并为将来的数据驱动决策和研究打下坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萌新待开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值