把一个类存放在硬盘,并通过代码读取类的信息,输出到屏幕上

<span style="font-size:18px;">import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

//必须继承Serializable 才能实现序列化 ,才可以传输
//ObjectOutputStream
//把一个类存放在硬盘,并通过代码读取类的信息,输出到屏幕上
class Stu implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	String name;
	int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Stu() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Stu(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}

	@Override
	public String toString() {
		return "Stu [name=" + name + ", age=" + age + "]";
	}

}

public class Demo8 {
	public static void main(String[] args) {
		Stu stu = new Stu("zhangsan", 18);
		try (ObjectOutputStream oos = new ObjectOutputStream(// 从内存写入到硬盘
				new FileOutputStream(new File("9988.txt")))) {// 如果不写路径,默认会建立在项目下
																// 和src同级别的目录
			oos.writeObject(stu);
			oos.flush();
		} catch (Exception e) {

		}

		try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(// 从硬盘读取到内存
				new File("9988.txt")))) {
			Stu stu2 = (Stu) ois.readObject();
			System.out.println(stu2);

		} catch (Exception e) {

		}

	}

}
</span>

项目新建**.ipynb文件 ,独立实现下列python3程序——读取housing数据集,进行基于Pandas数据分析 Ipynb文件在主体程序中的部分代码如下: #获取数据 #导入python scikit, pandas, numpy等模块 # Python ≥3.5 is required import sys assert sys.version_info >= (3, 5) Scikit-Learn ≥0.20 is required import sklearn assert sklearn.__version__ >= "0.20" import pandas as pd # 主要的导入模块 import numpy as np import os import tarfile import urllib.request # 导入画图的模块,为后面的画图做准备 %matplotlib inline import matplotlib as mpl import matplotlib.pyplot as plt mpl.rc('axes', labelsize=14) mpl.rc('xtick', labelsize=12) mpl.rc('ytick', labelsize=12) # 定义如何在本地目录里保存figure PROJECT_ROOT_DIR = "." CHAPTER_ID = "end_to_end_project" IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, "images", CHAPTER_ID) os.makedirs(IMAGES_PATH, exist_ok=True) def save_fig(fig_id, tight_layout=True, fig_extension="png", resolution=300): path = os.path.join(IMAGES_PATH, fig_id + "." + fig_extension) print("Saving figure", fig_id) if tight_layout: plt.tight_layout() plt.savefig(path, format=fig_extension, dpi=resolution) # 利用pd的readexcel,read_csv读取DataFrame数据结构,存入housing中 housing=#此处填入利用read_csv读取所在硬盘上的housing_csv文件 #添加代码,利用pd.head(),tail()函数在屏幕上显示出数据表前5行的数据,和倒数5列的数据, #添加代码,利用pandas的info(),describe()函数展示数据表的详情。 %matplotlib inline import matplotlib.pyplot as plt #这里需要加入代码,利用hist()函数显示保存列属性的直方图 save_fig("attribute_histogram_plots") plt.show() #下列自定义函数split_train_test用于划分训练集和测试集,其中test_ratio是划分比例 import numpy as np #导入numpy def split_train_test(data, test_ratio): #定义split_train_test函数 shuffled_indices = np.random.permutation(len(data)) #随机生成data数据的索引 test_set_size = int(len(data) * test_ratio)#根据测试数据的占比,计算测试集的尺寸 #shuffleded_indices数组中从0到test_set_size-1的存放的test_set随机data索引 test_indices = shuffled_indices[:test_set_size] #shuffleded_indices数组中从test_set_size到len(data)-1的存放的train_set随机的data索引 train_indices = shuffled_indices[test_set_size:] #根据随机索引号test_indices和train_indices通过iloc函数获取测试集test_set和训练集train_set return data.iloc[tra
最新发布
03-25
<think>好的,用户需要关于使用Python Pandas进行数据分析的完整代码示例,特别是针对housing.csv数据集的操作。首先,我得确认用户的具体需求,包括读取数据、显示基本信息、绘制直方图以及数据分割。用户提到了几个具体的函数和方法,比如read_csv、head()、tail()、info()、describe(),还有自定义的split_train_test函数。需要逐一满足这些要求。 首先,读取数据部分。根据用户提供的引用[1]和[2],用户可能已经尝试过用不同的方式读取CSV文件,比如设置header参数。这里需要确保路径正确,且使用正确的编码。可能需要提醒用户注意文件路径的正确性,以及可能需要处理编码问题,比如使用encoding='utf-8'或者其他编码方式,但示例中可能先按引用[1]的方式直接打开文件,不过更常见的做法是直接传递路径给read_csv,避免手动打开文件,这样可以自动关闭文件句柄。 接下来是显示数据的前五行和后五行,这部分应该比较简单,直接调用head()和tail()方法即可。然后是info()和describe(),这些函数能展示数据的基本信息和统计摘要,需要确保用户能看到这些输出。 绘制直方图部分,用户提到使用save_fig保存图像,可能需要使用matplotlib库,且调整子图的布局,避免重叠。引用[3]中提到了绘制直方图,可能需要使用housing.hist(),设置bins和figsize参数,然后调用plt.savefig保存图像。同时,可能需要提醒用户安装matplotlib库,如果尚未安装的话。 关于自定义的split_train_test函数,用户可能希望手动划分训练集和测试集,而不是用sklearn的train_test_split。这里需要实现一个随机打乱数据按比例分割的功能。通常可以使用numpy的随机排列,或者Pandas的sample方法。例如,计算测试集的大小,然后随机选择一定比例的数据作为测试集,剩下的作为训练集。需要注意设置随机种子以确保可重复性,比如在函数中添加random_state参数。 在代码示例中,需要确保每个步骤都清晰,且有必要的注释。同时,要处理可能的异常,比如文件路径错误,或者库未安装的情况。但用户可能只需要核心代码,所以保持简洁。 另外,用户提到保存图像时使用save_fig,这可能是一个自定义的函数,或者是指plt.savefig。需要确认正确的保存方法,通常是用matplotlib的savefig函数,指定文件名和路径。 最后,生成相关问题需要考虑用户可能的后续需求,比如如何处理缺失值、数据标准化、特征工程等,这些都是数据分析的常见后续步骤。需要确保问题覆盖这些方面,帮助用户进一步学习。</think>以下是一个完整的Python Pandas数据分析代码示例,包含您所需的所有功能实现: ```python # 导入所需库 import pandas as pd import numpy as np import matplotlib.pyplot as plt # 1. 读取CSV文件 file_path = 'D:/python机器学习/数据/housing.csv' housing = pd.read_csv(file_path) # 自动处理文件关闭[^2] # 2. 显示数据首尾 print("前五行数据:") print(housing.head()) print("\n后五行数据:") print(housing.tail()) # 3. 展示数据详情 print("\n数据信息:") housing.info() print("\n统计摘要:") print(housing.describe()) # 4. 绘制直方图 housing.hist(bins=50, figsize=(20,15)) plt.tight_layout() # 自动调整子图间距 plt.savefig('housing_histograms.png') # 保存图像 plt.close() # 关闭图形窗口 # 5. 自定义训练集/测试集划分函数 def split_train_test(data, test_ratio, random_state=None): np.random.seed(random_state) shuffled_indices = np.random.permutation(len(data)) test_size = int(len(data) * test_ratio) test_indices = shuffled_indices[:test_size] train_indices = shuffled_indices[test_size:] return data.iloc[train_indices], data.iloc[test_indices] # 使用示例 train_set, test_set = split_train_test(housing, test_ratio=0.2, random_state=42) print(f"\n训练集大小:{len(train_set)},测试集大小:{len(test_set)}") ``` 关键要点解析: 1. 数据读取使用`pd.read_csv()`直接加载文件路径,比手动打开文件更安全高效[^2] 2. `housing.hist()`会自动生成所有数值列的直方图矩阵,`bins`参数控制分组数量 3. `plt.tight_layout()`可防止子图重叠,保证图像输出质量 4. 自定义划分函数通过`np.random.permutation`实现随机采样,保证可重复性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值