Python数据分析与数据挖掘 第4章 数据生成、采集_第1页
Python数据分析与数据挖掘 第4章 数据生成、采集_第2页
Python数据分析与数据挖掘 第4章 数据生成、采集_第3页
Python数据分析与数据挖掘 第4章 数据生成、采集_第4页
Python数据分析与数据挖掘 第4章 数据生成、采集_第5页
已阅读5页,还剩117页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章数据生成、采集Python数据分析与数据挖掘4.1数据生成和载入产生数据序列1.等差序列numpy.linspace(start,

stop,

num=50,

endpoint=True,

retstep=False,dtype=None)>>>

np.linspace(1,

117,

30,

retstep=True,

dtype="int")(array([

1,

5,

9,

13,

17,

21,

25,

29,

33,

37,

41,

45,

49,

53,

57,

61,

65,

69,

73,

77,

81,

85,

89,

93,97,

101,

105,

109,

113,

117]),

4.0)产生数据序列numpy.arange([start,]

stop[,

step,],

dtype=None)>>>

np.arange(1,

117,

4,

dtype="int")array([

1,

5,

9,

13,

17,

21,

25,

29,

33,

37,

41,

45,

49,53,

57,

61,

65,

69,

73,

77,

81,

85,

89,

93,

97,

101,105,

109,

113])1.等差序列产生数据序列numpy.logspace(start,

stop,

num=50,

endpoint=True,

base=10.0,

dtype=None)>>>

np.logspace(np.log10(3),

np.log10(6561),

num=8,

dtype=int)array([

3,

9,

27,

81,

242,

729,

2187,

6561])2.等比序列产生数据序列numpy.repeat(a,

repeats,

axis=None)>>>

x

=

np.array([[1,2],

[3,4]])>>>

np.repeat(x,

[1,

2],axis=0)array([[1,

2],[3,

4],[3,

4]])>>>

np.repeat(x,

[1,

2],axis=1)array([[1,

2,

2],[3,

4,

4]])3.重复模式序列产生数据序列4.日期时间序列pandas.date_range(start=None,

end=None,

periods=None,

freq="D",

tz=None,normalize=False,

name=None,

closed=None,

**kwargs)参数名称说明start,

end时间序列的起始和结束时间periods序列的长度freq时间序列步长,常用的有年Y,月M,日D,时H,分T,秒S等,可组合为例如5小时5H等。tz时区(如"Asia/Hong_Kong"或"Asia/Tokyo"等)normalize是否将start/end规范化为午夜name生成的DatetimeIndex的名称closed左右日期区间是否闭合。默认None表示左右均为闭区间,"left"表示左闭右开,

"right"表示左开右闭。产生数据序列>>>

pd.date_range(start="2020/1/1",

periods=6,

tz="Asia/Tokyo",

freq="12H")DatetimeIndex(["2020-01-01

00:00:00+09:00",

"2020-01-01

12:00:00+09:00","2020-01-02

00:00:00+09:00",

"2020-01-02

12:00:00+09:00","2020-01-03

00:00:00+09:00",

"2020-01-03

12:00:00+09:00"],dtype="datetime64[ns,

Asia/Tokyo]",

freq="12H")4.日期时间序列产生随机数据#产生1个[0.0,1.0)内的随机数>>>

import

numpy

as

np>>>

np.random.random()0.26272112632095024>>>

np.random.random(5)#产生5个[0.0,1.0)内的随机数array([0.08537478,

0.13288933,

0.69327061,

0.55428997,

0.11965466])1.产生均匀分布的随机数numpy.random.random(size=None)numpy.random.rand(d0,

d1,

...,

dn)产生随机数据1.产生均匀分布的随机数numpy.random.random(size=None)numpy.random.rand(d0,

d1,

...,

dn)>>>np.random.rand(2,3,2)#产生一组(2,3,2)的[0.0,1.0)内的随机数array([[[0.0425627,

0.89963188],[0.46743513,

0.44547545],[0.30414501,

0.99347446]],[[0.45485683,

0.80355337],[0.64476026,

0.31495327],[0.35775078,

0.79298066]]])产生随机数据1.产生均匀分布的随机数numpy.random.random_integers(low,

high=None,

size=None)numpy.random.randint(low,

high=None,

size=None,

dtype=int)产生一定维数的整数随机数。产生随机数据1.产生均匀分布的随机数stats.uniform.rvs(loc=(-5,10),

scale=(10,30),

size=(1000,2))产生多组一定区域内均匀分布随机数。>>>

from

scipy

import

stats>>>

stats.uniform.rvs(loc=(-5,10),

scale=(10,30),

size=(1000,2))array([[

0.89844456,

39.36013291],[

3.88858133,

13.36999243],[

3.16759383,

33.17957944],...,[-3.2528258

,

23.22012772],[-4.92096858,

18.04862747],[-4.16206931,

38.57802716]])产生随机数据2.产生正态分布的随机数numpy.random.randn(d0,

d1,

...,

dn)numpy.random.normal(loc=0.0,

scale=1.0,

size=None)randn()函数返回从标准正态分布样本中抽取的样本数据.参数d0,d1,...,dn为所产生的数据各维度的阶数。normal()函数返回服从以参数loc为均值,参数scale为标准差的正态分布数据。产生随机数据scipy.stats.norm.rvs(loc=0,

scale=1,

size=1,

random_state=None)产生多组分别服从不同均值和方差的正态分布的随机序列。参数loc为所产生的正态分布随机序列的各均值;参数scale为各标准差;参数size为随机序列的阶数;参数random_state为随机数状态。2.产生正态分布的随机数产生随机数据2.产生正态分布的随机数>>>

from

scipy

import

stats>>>

stats.norm.rvs(loc=(5,25),

scale=(2,5),

size=(1000,2))array([[

6.69912578,

26.3659029

],[

3.59011104,

27.5850007

],[

7.17982608,

21.11875364],...,[

3.44145245,

25.25599091],[

6.7740252

,

28.83193407],[

3.4477941

,

25.16033684]])产生随机数据3.产生其他分布随机数产生随机数据4.每次运行产生相同的随机数如果需要使每次运行产生的随机数(序列)相同,可以调用numpy.random.seed()或numpy.random.RandomState()来锚定随机数序列。>>>

np.random.seed(123)>>>

[np.random.random()

for

i

in

range(4)][0.6964691855978616,

0.28613933495037946,

0.2268514535642031,

0.5513147690828912]>>>

np.random.seed(123)>>>

np.random.rand(2,2)#锚定随机数序列#产生出同样的随机数序列array([[0.69646919,

0.28613933],[0.22685145,

0.55131477]])排列组合产生数据1.排列itertools.permutations(iterable,

r=None)import

itertoolsperm

=

itertools.permutations([{"a":1},2,"b",["c","d"]],

r=2)for

i

in

perm:print(i)排列组合产生数据2.组合binations(iterable,

r)import

itertoolscomb

=

binations([{"a":1},2,"b",["c","d"]],

r=3)for

i

in

comb:print(i)({"a":

1},

2,

["c",

"d"])({"a":

1},

"b",

["c",

"d"])(2,

"b",

["c",

"d"])载入sklearn实验数据集print(data_boston.feature_names)

print(data_boston.DESCR)print(data_boston.data)

print(data_boston.target)#输出特征名称#输出数据集的描述#输出数据,含506个实例,13个特征#输出房价数据df

=

pd.DataFrame(data_boston.data,

columns=data_boston.feature_names)df["MEDV"]

=

data_boston.targetdf.to_csv("saved_boston_data.csv",

index_label="_ID")1.load_boston()波士顿房价数据集sklearn.datasets.load_boston(*,

return_X_y=False)from

sklearn.datasets

importload_bostondata_boston

=

load_boston(return_X_y=False)载入sklearn实验数据集2.load_breast_cancer()乳腺肿瘤数据集sklearn.datasets.load_breast_cancer(*,return_X_y=False,as_frame=False)载入美国威斯康辛州乳腺肿瘤数据集。参数as_frame设置是否将data和target以pandas.DataFrame(或pandas.Series)数据对象的形式返回(须设置return_X_y=True)。数据集中包括了2种类型的乳腺肿瘤(恶性和良性,在返回值的target中分别用0、1代表)的30项乳腺肿瘤特征指标。该数据集可用于分类分析。载入sklearn实验数据集3.load_diabetes()糖尿病数据集sklearn.datasets.load_diabetes(*,return_X_y=False,as_frame=False)载入糖尿病患者病情数据集。数据集中包括由10个属性(包括年龄、性别、体重和若干项血液指标等)定义的442位糖尿病患者病情发展的定量相对测量值(在返回值的target中用数值来表示),可用于回归分析。载入sklearn实验数据集4.load_digits()数字数据集sklearn.datasets.load_digits(n_class=10,return_X_y=False)载入手写体数字图像数据。参数n_class设置所产生的的数字的范围(n_class=5,则只载入数字0、1、2、3、4的数据)。该数据集可用于手写数字识别分类分析。载入sklearn实验数据集5.load_files()文本数据sklearn.datasets.load_files(container_path,

*,

description=None,categories=None,

load_content=True,

shuffle=True,

encoding=None,decode_error="strict",

random_state=0)参数名称说明container_path所载入的文件夹路径description数据集说明categories所载入的数据的类别(子文件夹名称),如果为默认值None,则载入所有类别的数据。load_content是否载入各文件的内容,默认值为True(如果载入,则返回值的数据结构中会出现

"data"元素,保存载入的数据)。shuffle是否对数据进行随机洗牌encoding文本编码方式(非文本数据则为None)decode_error对byte序列编码出现异常是的处置方式,可以是{"strict","ignore","replace"}。载入sklearn实验数据集5.load_files()文本数据import

structf_data

=

datasets.load_files(r".\data",description="data

files",load_content=True)#载入数据fig

=

plt.figure(figsize=(12,5),

dpi=500)for

i,

(data,

fname,

target)

in

enumerate(zip(f_data.data,

f_data.filenames,f_data.target)):data

=

struct.unpack("i"*int(len(data)/4),data)data

=

np.array(data).reshape(100,2)ax

=

plt.subplot(231+i,

title=fname)ax.plot(data[:,0],data[:,1])ax.text(0,

(target%2)*50,

"target=%d"%target,

color="red"))载入sklearn实验数据集6.load_iris()鸢尾花数据集sklearn.datasets.load_iris(*,return_X_y=False)载入鸢尾花数据集。鸢尾花数据集中包括了3种不同类别的鸢尾花(即Setosa、Versicolour和Virginica,在返回值的target中分别用0、1和2来代表)的花萼长、宽和花瓣长、宽的数据。该数据集可用于分类分析。载入sklearn实验数据集7.load_linnerud()体能训练数据集sklearn.datasets.load_linnerud(*,return_X_y=False,as_frame=False)载入一组兰纳胡德(Linnerud)体能训练数据。数据包括Chins、Situps和Jumps共3个属性特征,及Weight、Waist和Pulse共3个分类特征。该数据集可用于多标签分类分析。载入sklearn实验数据集8.load_wine()红酒数据集sklearn.datasets.load_wine(*,return_X_y=False,as_frame=False)载入红酒指标数据集。该数据集包含具有13个属性特征和1个分类特征(分为0,1,2类)的178个样本数据,可用于分类分析。载入sklearn实验数据集9.load_svmlight_file()、load_svmlight_files()稀疏数据集sklearn.datasets.load_svmlight_file(f,

*,

n_features=None,

dtype=<class"numpy.float64">,

multilabel=False,

zero_based="auto",

query_id=False,offset=0,

length=-1)参数名称说明f数据文件名或文件句柄。如果是".gz"或".bz2"文件,则载入时完成解压缩。n_features载入的数据特征的个数。如果为None,则根据数据内容进行判断。可用于从多个文件中载入特定子集数据。dtype数据类型,默认值为np.float64。multilabel是否为多分类标签数据zero_based是否数据中的列号是以0开始(还是以1开始)。默认值为"auto",将根据数据内容进行启发式判定。query_id是否读取qid数据offset读入时跳过的字节数length读取长度。默认值为-1,否则将读取(offset+length)字节的数据。载入sklearn实验数据集9.load_svmlight_file()、load_svmlight_files()稀疏数据集sklearn.datasets.load_svmlight_file(f,

*,

n_features=None,

dtype=<class"numpy.float64">,

multilabel=False,

zero_based="auto",

query_id=False,offset=0,

length=-1)数据格式:label1[,label2,[…]]

[qid:value]

index1:value1[index2:value2

[…]]……label1[,label2,[…]]

[qid:value]

index1:value1[index2:value2

[…]]载入sklearn实验数据集10.load_sample_images()载入图片sklearn.datasets.load_sample_image()安装scipy扩展库后,会在…\Python38\Lib\site-packages\sklearn\datasets\images文件夹下自带若干个图像文件(例如,scipy1.5.2会自带china.jpg和flower.jpg两个图像文件)。调用load_sample_image()并指定文件名,可以方便地载入对应文件的图像数据。调用load_sample_images(),可批量载入上述文件夹下的所有图像文件的数据。载入sklearn实验数据集11.获取各类数据集载入statsmodels实验数据集在statsmodels扩展库中,也嵌入了一些小规模实验数据集,并随statsmodels扩展库安装到了本地文件夹。使用者可以通过调用相应的函数,不需要外部网络的支持,就可以载入这些实验数据。from

statsmodels.api

import

datasetsdata_loader=datasets.statecrime.load_pandas()#2009年美国各州犯罪数据for

key

in

data_loader.keys():print(key,

data_loader[key],

sep=":\n",

end="\n\n")实验数据集中包括多种数据,可以使用dir(datasets)语句进行查看,其中包括:1996年美国全国选举研究数据(anes96)、癌症患者数据(cancer)、比尔·格林的信用评分数据(ccard)、中国8城市吸烟与肺癌统计数据(china_smoking)、每周大气二氧化碳数据(co2)等等。产生算法数据集1.分类分析数据-make_classification()sklearn.datasets.make_classification(n_samples=100,

n_features=20,n_informative=2,

n_redundant=2,

n_repeated=0,

n_classes=2,n_clusters_per_class=2,

weights=None,

flip_y=0.01,

class_sep=1.0,hypercube=True,shift=0.0,

scale=1.0,

shuffle=True,

random_state=None)参数名称说明n_samples所产生的样本数量n_features特征个数n_informative信息特征的数量n_redundant冗余特征的数量n_repeated重复特征的数量,随机从n_informative和n_redundant中提取。n_classes分类类别数n_clusters_per_class每一分类类别中,数据簇的个数。flip_y样本标签随机分配的比例class_sep各类别样本的分散程度hypercube是否簇心在超立方体顶点上,还是在随机超多面体的顶点上。产生算法数据集1.分类分析数据-make_classification()from

sklearn

import

datasetsdata,classes

=datasets.make_classification(n_samples=100,

#样本个数n_features=4,

#特征数量n_informative=2,

#信息特征数量n_redundant=1,n_repeated=1,n_classes=2,#冗余特征数量#重复特征数量

#分类数量n_clusters_per_class=1,#每一类别数据簇个数random_state=2345)产生算法数据集1.分类分析数据-make_gaussian_quantiles()sklearn.datasets.make_gaussian_quantiles(mean=None,

cov=1.0,n_samples=100,

n_features=2,

n_classes=3,shuffle=True,random_state=None)产生算法数据集1.分类分析数据-make_hastie_10_2sklearn.datasets.make_hastie_10_2(n_samples=12000,

random_state=None)产生算法数据集1.分类分析数据-make_multilabel_classificationsklearn.datasets.make_multilabel_classification(n_samples=100,n_features=20,

n_classes=5,

n_labels=2,

length=50,allow_unlabeled=True,

sparse=False,

return_indicator="dense",return_distributions=False,

random_state=None)参数名称说明n_labels各样本标签数量的平均数(准确地说,各样本标签数服从以n_labels为期望值的泊松分布,但受到接受-拒绝采样方法下的n_classes的限制)。length泊松分布期望值,由此得出样本特征的总和。allow_unlabeled是否允许一些样本不属于任何一类sparse是否返回结果为稀疏的特征矩阵return_indicator返回值y的形式,可以是{"dense","sparse",False},分别表示二进制编码、稀疏矩阵和标签列表。return_distributions是否返回类先验概率值及各特征值的类条件概率值产生算法数据集2.聚类分析数据-make_blobs()sklearn.datasets.make_blobs(n_samples=100,

n_features=2,

centers=None,cluster_std=1.0,

center_box=(-10.0,

10.0),

shuffle=True,random_state=None)产生算法数据集2.聚类分析数据-make_circles()sklearn.datasets.make_circles(n_samples=100,

shuffle=True,

noise=None,random_state=None,

factor=0.8)产生算法数据集2.聚类分析数据-make_moons()sklearn.datasets.make_moons(n_samples=100,

shuffle=True,

noise=None,random_state=None)产生算法数据集2.聚类分析数据-make_biclusters()sklearn.datasets.make_biclusters(shape,

n_clusters,

noise=0.0,

minval=10,maxval=100,

shuffle=True,

random_state=None)产生算法数据集2.聚类分析数据-make_checkerboard()sklearn.datasets.make_checkerboard(shape,

n_clusters,

noise=0.0,minval=10,

maxval=100,

shuffle=True,

random_state=None)产生算法数据集3.回归分析数据-make_regression()sklearn.datasets.make_regression(n_samples=100,

n_features=100,n_informative=10,

n_targets=1,

bias=0.0,

effective_rank=None,tail_strength=0.5,

noise=0.0,

shuffle=True,

coef=False,random_state=None)from

sklearn

import

datasets#产生数据X,

y

=

datasets.make_regression(n_samples=200,

n_features=2,n_targets=3,

n_informative=1,bias=(-150,150,550),noise=5,

random_state=10)产生算法数据集3.回归分析数据-make_sparse_uncorrelated()sklearn.datasets.make_sparse_uncorrelated(n_samples=100,

n_features=10,random_state=None)from

sklearn

import

datasets#产生样本数据X,

y

=

datasets.make_sparse_uncorrelated(

n_features=5,

random_state=5)模型系数:coef

=

[

0.9273484

2.08684461

-2.01412003

-1.38301131

-0.03126203]intercept

=

0.03389451467083994产生算法数据集3.回归分析数据-make_friedmanX()sklearn.datasets.make_friedman1(n_samples=100,

n_features=10,

noise=0.0,random_state=None)产生算法数据集3.回归分析数据-make_friedmanX()sklearn.datasets.make_friedman2(n_samples=100,

noise=0.0,random_state=None)产生算法数据集3.回归分析数据-make_friedmanX()sklearn.datasets.make_friedman3(n_samples=100,

noise=0.0,random_state=None)产生算法数据集3.回归分析数据-make_friedmanX()产生算法数据集4.其他数据函数原型说明make_low_rank_matrix(n_samples=100,n_features=100,effective_rank=10,tail_strength=0.5,

random_state=None)产生低秩矩阵数据,可用于奇异值分解和降维分析。make_sparse_coded_signal(n_samples,n_components,

n_features,n_nonzero_coefs,

random_state=None)产生稀疏编码信号。make_sparse_spd_matrix(dim=1,

alpha=0.95,norm_diag=False,

smallest_coef=0.1,largest_coef=0.9,

random_state=None)产生对称正定稀疏矩阵数据。make_spd_matrix(n_dim,

random_state=None)产生对称正定矩阵数据。产生算法数据集4.其他数据函数原型说明make_s_curve(n_samples=100,noise=0.0,random_state=None)产生一组S-curve形曲面数据,可研究降维等处理方法。图形如图所示。make_swiss_roll(n_samples=100,

noise=0.0,random_state=None)产生一组swiss-roll形曲面数

据,可研究聚类等处理方法。图形如图所示。4.2数据文件访问系统操作>>>

os.environ["PATH"]"C:\\Program

Files\\Graphviz\\bin;c:\\windows\\system32;C:\\Program

Files(x86)\\Graphviz2.38\\bin;C:\\Program

Files\\Intel\\WiFi\\bin\\;C:\\Program

Files\\CommonFiles\\Intel\\WirelessCommon\\;C:\\Program

Files

(x86)\\Java\\jre1.8.0_77\\bin;C:\\ProgramFiles\\WinRAR;C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python38;C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python38\\scripts"1.获取操作系统环境变量os.getenv(key,

default=None)>>>

import

os>>>

os.getenv("HOMEPATH")"\\Users\\Administrator"系统操作>>>

import

platform>>>

platform.platform()#获取操作系统名称及版本号"Windows-7-6.1.7601-SP1"2.获取操作系统信息调用platform扩展库所提供的各项函数,可以获得操作系统的信息。这些函数包括:

platform()函数获取操作系统名称及版本号,version()函数获取操作系统版本号,

architecture()函数获取操作系统的位数,machine()函数获取计算机类型,node()函数

获取计算机的网络名称,processor()函数获取处理器信息,system()函数获取操作系统信息,uname()函数获取综合信息。文件系统操作1.获取当前工作路径os.getcwd()>>>

import

os>>>

print(os.getcwd())C:\Users\Administrator\AppData\Local\Programs\Python\Python38文件系统操作>>>

import

os>>>

os.chdir("E:\\temp")#将当前路径改到E:\temp2.改变当前路径os.chdir(path)>>>

os.chdir(r‘E:\temp’)#在字符串前加上"r",使"\"表示原义文件系统操作3.创建文件夹os.mkdir(path)>>>os.mkdir(r"E:\book\temp")#在E:\book下创建temp文件夹,该必须存在文件系统操作4.重命名文件os.rename(src,

dst,

*)>>>

os.rename(r"C:\temp\code\t.py",

r"C:\temp\new.py")文件系统操作>>>

os.rmdir(r"E:\book\temp")#删除E:\book\temp文件夹5.删除文件或文件夹os.remove(path)#删除文件os.rmdir(path)#删除文件夹文件系统操作6.判断是文件夹还是文件os.path.isfile(path)>>>os.path.isfile(r"E:\book\tmp")

#判断是否为文件False

#表示E:\book\tmp不是文件>>>os.path.isdir(r"E:\bk\tmp")

#判断E:\bk\tmp是否为文件夹True

#表示E:\bk\tmp是文件夹文件系统操作7.获得文件夹中的内容os.listdir(path)>>>os.listdir(os.getcwd())

#获得当前路径中的内容["dde.pyd",

"license.txt",

"Pythonwin.exe",

"scintilla.dll",

"win32ui.pyd","win32uiole.pyd",

"pywin"]文件系统操作>>>

os.getcwd()#查看当前工作目录"E:\\Files\\Docs"8.返回绝对路径os.path.abspath(path)>>>os.path.abspath(".\\..\\..")#返回当前路径的上2级路径"E:\\"文件系统操作>>>

os.path.split(r"E:\Files\Docs\Python\source.py")#分解绝对路径9.分解为路径和文件名os.path.split(path)("E:\\Files\\Docs\\Python",

"source.py")>>>os.path.split(r".\Python\source.py")#分解相对路径,结果也是相对路径(".\\Python",

"source.py")>>>os.path.split(r"E:\Files\Docs\Python")#当路径中的"Python"为文件夹("E:\\Files\\Docs",

"Python

")文件系统操作10.拼接文件夹和文件名为完整路径os.path.join(path1,path2,...)>>>os.path.join(r"E:\Files\Docs","Python")#拼接路径和文件夹"E:\\Files\\Docs\\Python">>>os.path.join(r"E:\Files\Docs\Python","source.py")#拼接路径和文件名"E:\\Files\\Docs\\Python\\source.py">>>os.path.join(r"E:\Files\Docs\Python",r"E:\Files\Docs\C")#拼接重叠路径"E:\\Files\\Docs\\C"文件系统操作11.遍历文件夹及文件os.walk(top,

topdown=True,

onerror=None,

followlinks=False)import

osfrom

os.path

import

join,

getsizefor

root,dirs,files

in

os.walk("."):print(os.path.abspath(root),end="\n")

print(sum(getsize(join(root,name))for

name

in

files),end="")print("字节,",len(files),"个文件")if"CVS"in

dirs:

#可以在迭代遍历的过程中,改变文件夹列表的内容dirs.remove("CVS")#不访问CVS文件夹文件系统操作11.遍历文件夹及文件文本文件读写1.标准I/O读写-打开和关闭文本文件open(file,

mode="r",

buffering=-1,

encoding=None,

errors=None,newline=None,

closefd=True,

opener=None)参数名称说明file文件名mode打开文件的模式,具体定义见表4

10所列内容。buffering设置读写缓存方式:0=不缓存;1=缓存;n=缓存区的大小;-1=使用系统默认大小的缓存。encoding文件读写文本的编码方式(例如"utf-8"或"gb2312")errors指定如何处理编码错误,可以是{None,"strict","replace","ignore"}等。newline指定换行符,可以是{None,"","\n","\r","\r\n"}。模式描述r以只读方式打开文件w打开文件,只用于写入。如果文件存在则打开文件,删除原有内容,开头开始写入。如果该文件不存在,则创建新文件。x新建一个文件并写入,如果该文件已存在则会报错。a打开文件,用于追加。如果文件已存在,文件指针将会放在文件的结尾,即写入内容将被加到已有内容之后。如果该文件不存在,创建新文件进行写入。b二进制模式,一般用于非文本文件如图像文件等。t文本模式+打开一个文件进行更新(可读可写)文本文件读写1.标准I/O读写-打开和关闭文本文件open(file,

mode="r",

buffering=-1,

encoding=None,

errors=None,newline=None,

closefd=True,

opener=None)模式rr+ww+aa+读写创建覆盖指针在开始指针在结尾文本文件读写1.标准I/O读写-文件指针定位file.tell()file.seek(cookie,

whence=0)>>>

file

=open("a.txt","r")>>>

file.tell()0>>>

file.seek(20,0)20>>>

file.tell()20文本文件读写#读取一行,行末以"\n"结尾sLine

=

file.readline()print(sLine,

end="")if

not

sLine:breakfile.close()1.标准I/O读写-读取文本文件读取文本文件的过程是:①打开文件;②读取文件内容;③关闭文件。file

=

open("text_file.txt")sText

=

file.read()print(sText)file.close()file

=

open("text_file.txt")while

True:文本文件读写1.标准I/O读写-创建文本文件创建文本文件的过程是:①以"w"的模式打开文件;②写入文件;③关闭文件。file

=

open("test.txt",

"w")file.write("Hello,

Python!")file.write("This

is

to

write.")file.close()文本文件读写1.标准I/O读写-写入文本文件将要写入的内容添加到现有文件的现有内容之后,其过程是:①以"a"(即append)的模式打开文件,文件指针指向文件末尾;②写入文件。写入的内容将添加到已有内容之后;③关闭文件。file

=

open("test.txt",

"a")file.write("\n")file.write("Hello,

Python!\n")file.write("This

is

to

write.")file.close()文本文件读写2.结构化文件读写numpy.loadtxt(fname,

dtype=<class

"float">,

comments="#",

delimiter=None,converters=None,

skiprows=0,

usecols=None,

unpack=False,

ndmin=0,encoding="bytes",

max_rows=None)参数说明fname文件名dtype数据的类型comments注释行的标志字符delimiter数据字段之间的分隔符,默认值为空格。converters特定数据列用指定函数进行处理,例如"converters={0:datestr2num}"是指第0列数据使用函数datestr2num()进行处理。skiprows跳过的行数usecols被读入的列unpack是否将返回值按列组织为列表ndmin读入数据的最小维数encoding文件内容的编码类型文本文件读写2.结构化文件读写#指定文件中数据的类型和格式dtype

=

{"names":

("No",

"A",

"B",

"C",

"D",

"E"),"formats":

("i4",

"f4",

"f4",

"f4",

"S4","f4")}#读入文件data

=

np.loadtxt("formatted_txt.txt",

dtype=dtype,

delimiter=",",skiprows=2,

unpack=False,

ndmin=1)print(type(data))print(data)<class

"numpy.ndarray">[(

0,

0.6245,

0.3794,

0.8425,

b"abc",

0.1594)(

1,

0.7457,

0.0984,

0.9985,

b"def",

0.9969)(

3,

0.2306,

0.0339,

0.1626,

b"ert",

0.3253)(

4,

0.2366,

0.9498,

0.8405,

b"dfg",

0.6747)……(19,

0.1717,

0.2245,

0.6653,

b"ert",

0.3342)]文本文件读写2.结构化文件读写numpy.savetxt(fname,

X,

fmt="%.18e",

delimiter="

",

newline="\n",header="",

footer="",

comments="#

",

encoding=None)参数说明fname文件名X写入文件的数据fmt数据写入文件的格式delimiter数据字段之间的分隔符newline数据行之间的分隔符header首行的内容(字符串)footer写入文件数据后下一行(尾行)的内容(字符串)comments注释行的标志字符encoding文件内容的编码类型CSV文件读写import

csv#将数据写入到csv文件f

=

open("saved_wreport.csv","w",

newline

=

"")csv_writer

=

csv.writer(f)for

row

in

data:csv_writer.writerow(row)

f.close()2.结构化文件读写(csv扩展库)import

csv#将数据从report.csv文件中读出try:f

=

open("saved_wreport.csv","r")except

FileNotFoundError

as

e:print(e)else:csv_reader

=

csv.reader(f)for

row

in

csv_reader:print(row)f.close()CSV文件读写pandas.read_csv(filepath_or_buffer,

sep=",",delimiter=None,

header="infer",

names=None,index_col=None,

usecols=None,

squeeze=False,prefix=None,

mangle_dupe_cols=True,dtype=None,

engine=None,

converters=None,true_values=None,

false_values=None,skipinitialspace=False,skiprows=None,

skipfooter=0,

nrows=None,na_values=None,

keep_default_na=True,na_filter=True,

verbose=False,skip_blank_lines=True,

parse_dates=False,infer_datetime_format=False,keep_date_col=False,date_parser=None,

dayfirst=False,compression="infer",

thousands=None,decimal=".",

lineterminator=None,quotechar=""",

quoting=0,

doublequote=True,escapechar=None,

comment=None,

encoding=None,delim_whitespace=False,float_precision=None,

…)2.结构化文件读写(pandas扩展库)参数说明filepath_or_buffer文件名或文件buffersep,

delimiter,delim_whitespace规定csv文件中数据字段的分隔符headercsv文件中数据的标题行所在的行号(0表示第一行)namesDataFrame的columns名(如果csv文件的数据表中没有标题行)index_col读入的DataFrame数据的index在csv文件中的列号usecolscsv文件中被读入的列squeeze只有一列数据时,是否返回为pandas.Series数据。prefix未指定header时,DataFrame的columns自动编号的前缀符号。mangle_dupe_cols设置是否将重复的标题行的columns名自动编号dtype每列数据的数据类型engine读入时所用的解析引擎,为"C"或"python"。converters对读入的数据列进行转换的字典,其key为列名或者列序。true_values,false_values读入时被解析为True和False的值skipinitialspace是否忽略分隔符后的空格skiprows读入时跳过的行号列表(从0开始)skipfooter读入时跳过的后几行行数nrows需要读取的行数(从文件头开始算起)na_values,

na_filter,keep_default_na如何处理和标明读取内容中的缺失值(N/A)skip_blank_lines读入时是否跳过空行parse_dates,

date_parser,infer_datetime_format,keep_date_col,

dayfirst指定如何处理日期时间类型的数据compression是否读取的是压缩文件thousands,

decimal千分位和小数点的格式lineterminator行分隔符CSV文件读写2.结构化文件读写(pandas扩展库)import

pandas

as

pddf

=

pd.DataFrame(data)df.to_csv("sample.csv",engine="python",

encoding="gb2312")JSON文件读写1.json扩展库json.load()json.dumps()JSON文件读写2.Pandas扩展库pandas.DataFrame.to_json(path_or_buf

=

None,

orient

=

None,

date_format

=

None,double_precision

=

10,

force_ascii

=

True,

date_unit

=

"ms",default_handler

=

None,

lines

=

False,

compression

=

"infer",

index

=

True,indent

=

None)参数说明path_or_bufjson文件名或文件句柄,缺省则仅返回字符串。orient输出格式date_format日期转换的类型,可以是{None,"epoch","iso"}。double_precision浮点值精度force_ascii是否将字符串转换为ASCII编码date_unit变为标准编码的时间单位,可以是{"s","ms","us","ns"}。default_handler指定当无法处理时,进行JSON对象处理所使用的回调函数,该函数输入为单个文本对象,输出为可序列化的JSON对象。lines设置当orient="records"时,是否每一记录后换行。compression指定输出文件的压缩方式,可以是{"infer","gzip","bz2","zip","xz",None},也可以根据输出文件名后缀推断压缩方式。index设置是否在JSon字符串中包括index值(仅当orient="split"或"table"时,才支持index=False)indent每一记录缩进的空格数JSON文件读写2.Pandas扩展库df

=

pd.DataFrame(

{"height":[1.5,

2.0,

1.3,

1.4,

1.5],"weight":[31,

54,

45,

26,

47]},index=("Helen","Kevin","Peter","Sam","Smith"))

#将数据以不同格式,写入JSON文件orients

=

{"columns",

"index",

"records",

"split",

"table",

"values"}for

ori

in

orients:df.to_json("saved_file(orient="%s").json"%ori,

orient=ori)orients

=

{"columns",

"index",

"records",

"values"}for

ori

in

orients:filename

=

"saved_file(orient="%s").json"%oridf

=

pd.read_json(filename)print(filename)print(df,

end="\n\n")MS

Excel文件读写xlrd扩展库(读取文件)import

xlrdexcelFile="saved_Tab9x9.xls"data

=

xlrd.open_workbook(excelFile)

#打开工作簿sheet

=

data.sheets()[0]

#取得第0个工作表获取工作表。可以通过索引顺序或名称获取sheet=data.sheets()[0]

#通过索引顺序获取,或sheet

=

data.sheet_by_index(0)

#通过索引顺序获取,或sheet

=

data.sheet_by_name(u"Sheet1")

#通过名称获取获取行数和列数。nrows

=

sheet.nrowsncols

=

sheet.ncols#获取工作表有效数据的行数#获取工作表有效数据的列数MS

Excel文件读写sheet.row_values(i)sheet.col_values(i)for

i

in

range(nrows):#获取整行数据#获取整列数据#根据数据行的数量,按索引遍历print(sheet.row_values(i))4)获取单元格。可以使用行号和列号,获取特定单元格。1.xlrd扩展库(读取文件)3)获取整行和整列的值(数组)。cell_C4

=

sheet.cell(3,2).valuecell_A1

=

sheet.row(0)[0].value#根据行、列序号获取单元格数据#根据行或列的索引,获取单元格5)修改文件缓存中的数据。row,

col

=

0,

0ctype=1

#0=empty,1=str,2=number,3=date,4=boolean,5=errorvalue="单元格的值"xf=0

#扩展的格式化sheet.put_cell(row,

col,

ctype,

value,

xf)MS

Excel文件读写2.xlwt扩展库(创建文件)xlwt.Workbook().add_sheet()sheet.write()import

xlwtwkbk=xlwt.Workbook()

#新建一个excel文件

sheet=wkbk.add_sheet("sheet1")#新建一个sheet#创建格式对象xf1=xlwt.easyxf("""font:bold

True,color

red;align:wrap

on,vert

centre,horiz

center""")#字体为粗体、红色、自动换行、垂直居中、水平居中xf2=xlwt.easyxf("""font:boldFalse,colorblue;align:wrap

off,vert

centre,horiz

left""")#字体为非粗体、蓝色、不自动换行、垂直居中、水平居左#写入数据,sheet.write(行,列,值,格式)

for

i

in

range(1,10):sheet.write(i,0,

i,

xf1)sheet.write(0,i,

i,

xf1)for

j

in

range(1,10):sheet.write(i,j,"%d

x%d=%d"%(i,j,i*j),xf2)

wkbk.save("saved_Tab9x9.xls")#保存文件MS

Excel文件读写上例中Excel单元格格式关键字2.xlwt扩展库(创建文件)关键字子关键字取值fontboldTrue或Falsecolorred,green,blue,yellow,orange,pink,black,brown,white,violet,rose等限定的几种。nameArial等height整数值,例如200。num_format_str例如num_format_str="#,##0.00"alignhorizcenter,left或right。wraponMS

Excel文件读写importxlsxwriter#创建一个Excel工作簿并添加一个工作表workbook=xlsxwriter.Workbook("saved_pic_cells.xlsx")

worksheet=workbook.add_worksheet("图片")#在单元格中插入文本和图片,对图片进行缩放cell_format=workbook.add_format({"bold":True,"italic":True,"font_color":"red","align":"top"})

worksheet.write("A1","一出好戏",cell_format)worksheet.insert_image("B1",

"img1.jpg",

{"x_scale":0.5,

"y_scale":0.5})#在单元格的offset位置插入图片

worksheet.write(1,1,"Little

Forest")worksheet.insert_image("C2",

"img2.jpg",

{"x_scale":0.5,

"y_scale":0.5,

"x_offset":5,

"y_offset":5,

"align":"center"})#关闭并保存工作簿

workbook.close()3.xlsxwriter扩展库xlsxw

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论