第3章 数据获取_第1页
第3章 数据获取_第2页
第3章 数据获取_第3页
第3章 数据获取_第4页
第3章 数据获取_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

数据获取1数据类型目录常见数据来源2数据读取方式3常用Python数据格式与读写函数4小结5直接来源是来源于本人或本公司直接记录、调查或实验的结果,又称为第一手数据。最为常见的直接来源为存储在公司业务系统数据库中的数据,这些数据由公司的日常运营生产活动产生,是最直接也是最容易获取的数据来源。另一种常见的数据直接来源为问卷调查,主要采用将结构式的调查问卷与抽查法相结合的形式,问卷调查越来越多地被用于定量研究,并成为社会科学研究的主要方式之一。直接来源间接来源是来源于别人调查或实验的数据,又称为第二手数据。由于个人和商业公司的力量有限,一些宏观数据需要由专门的大型调查公司或政府部门来提供,这些数据的来源渠道也比较多,如报纸、书籍、统计年鉴、相关网站及专业调查公司等。如果调查的领域专业性较强,那么需要查阅相关的专业性网站提供的数据,或使用搜索引擎的高级搜索功能完成。间接来源1数据类型目录背景与挖掘目标2数据读取方式3常用Python数据格式与读写函数4小结5结构化数据的表现形式为二维的列表结构,严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理。结构化数据由行和列构成,通常每一行对应一条记录,每一列对应一个属性,同一个表中的数据具有相同的属性集,即同一张表中所有记录的列的个数是一致的。结构化数据一个结构化数据的例子如下表所示。上表中展示了一条结构化的客户消费记录。id列表示该客户的id为4382,通常为数值型或者字符型。sex列表示该客户的性别为男性,通常为字符型。con_amount列表示该客户的消费金额为24.5(元),为数值型。con_time列表示该客户的消费时间为2020年1月15日的15:30,通常为字符型或者时间型。结构化数据idsexcon_amountcon_time4382M24.52020-1-1515:30结构化数据主要应用于各类业务系统的关系型数据库中,其存储需求包括高速存储应用需求、数据备份需求、数据共享需求以及数据容灾需求等。结构化数据半结构化数据是结构化数据的一种特殊形式,是以树或者图的数据结构存储的数据,其结构并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构。半结构化数据包含相关标记,用来分隔语义元素以及对记录和字段进行分层,这种结构也被称为自描述的结构。半结构化数据的数据库是节点的集合,每个节点都是一个叶子节点或者一个内部节点。叶子节点与数据相关,数据的类型可以是任意原子类型,如数字和字符串。每个内部节点至少有一条外向的弧。每条弧都有一个标签,该标签指明弧开始处的节点与弧末端的节点之间的关系。一个名为根的内部节点没有进入的弧,它代表整个数据库。每个节点都从根可达,整个图的结构未必是一棵树。半结构化数据常见的半结构化数据格式有XML和JSON,一个半结构化数据的例子如下表所示。上表为一个XML文件中的记录,可以看到两条记录的属性个数是不一样的,第一条记录有name、age和gender三个属性,而第二条记录只有name和gender两个属性。半结构化文件记录的属性个数是可以变动的,这点与结构化数据要求数据必须具有相同的属性集不同,使得半结构化数据具有更好的灵活性。半结构化数据<person><name>Anna</name><age>23</age><gender>female</gender></person><person><name>Tom</name><gender>male</gender></person>半结构化数据包括邮件、HTML、报表、资源库等,常见的应用场景有邮件系统、WEB集群、教学资源库和档案系统等。这些应用的存储要求主要有数据存储、数据备份、数据共享以及数据归档等。半结构化数据非结构化数据是数据结构不规则或不完整,没有预定义的数据模型,不方便用数据库二维逻辑表来表现的数据。常见的非结构化数据包括办公文档、文本、图像、音频、视频等。非结构化数据的格式非常多样,标准也具有多样性,在技术上非结构化信息比结构化信息更难标准化和理解。其存储、检索、发布以及利用需要更加智能化的IT技术,常见具体应用有医疗影像系统、教育视频点播、视频监控、国土GIS、设计院、文件服务器(PDM/FTP)、媒体资源管理等。非结构化数据1数据类型目录常见数据来源2数据读取方式3常用Python数据格式与读写函数4小结5在生产环境中,绝大多数的数据都存储在数据库中。想要读取数据库中的数据需要先与数据库建立连接。数据库连接是分析工具与数据库之间的通道,只有建立数据库连接后,用户才能对数据库中的数据进行操作。连接数据库Python也需要与数据库建立连接后才能读取数据库中的数据,一个常用建立连接的方法为通过SQLAlchemy库并配合相应数据库的Python连接工具。不同的数据库需要选择对应的连接工具,如MySQL数据库需要安装mysqlclient或者pymysql库,Oracle数据库需要安装cx_oracle库。连接数据库SQLAlchemy库支持与MySQL、postgresql、Oracle、SQLServer和SQLite等主流数据库建立连接,建立连接时需要提供数据库产品名、连接工具名、用户名、密码、数据库IP地址、数据库端口号、数据库名称,同时还需要注意数据库中使用的数据编码,使用错误的编码会导致乱码问题。与数据库进行连接后,可以与数据库进行交互,对数据库中的数据进行操作。常见的操作包括读取、存储以及增、删、改、查等,通过pandas库对数据库进行读取和存储操作。连接数据库另一种常见的数据载体是文本文件。文本文件是一种由若干行字符构成的计算机文件,它是一种典型的顺序文件。常见的有TXT文件和CSV文件,这两种文件的主要区别是TXT文件使用空格分隔,而CSV是一种逗号分隔的文件格式。因为其分隔符不一定是逗号,又被称为字符分隔文件,文件以纯文本形式存储表格数据(数字和文本)。它是一种通用、相对简单的文件格式,最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持CSV或者其变体,可以作为大多数程序的输入和输出格式。文件读取CSV文件根据其定义也是一种文本文件,在数据读取过程中可以使用文本文件的读取函数对CSV文件进行读取。使用read_table和read_csv函数读取CSV文件。读取文件时需要注意编码问题,常用的编码有utf-8、utf-16、gbk、gb2312、gb18030等。如果编码指定错误数据将无法读取,IPython解释器会报解析错误。文件读取除了TXT文件和CSV,Excel文件也是常见的需要读取的数据文件种类。Excel可以进行各种数据的处理、统计分析和辅助决策操作,被广泛地应用于管理、统计财经和金融等众多领域。其文件格式依照程序版本的不同分为两种。MicrosoftOfficeExcel2007之前的版本(不包括2007)默认保存的文件名后缀为.xls。MicrosoftOfficeExcel2007之后的版本默认保存的文件名后缀为.xlsx。文件读取1数据类型目录常见数据来源2数据读取方式3常用Python数据格式与读写函数4小结5读取进Python中的数据主要为格式化的数据,Python、pandas和NumPy中常见的数据类型如下表所示。常用Python数据格式转换函数Python类型pandas类型NumPy类型数据类型intint64int_,int8,int16,int32,int64,uint8,uint16,uint32,uint64整数strobjectstring_,unicode_字符串floatfloat64float_,float16,float32,float64浮点数boolboolbool_布尔值

datetime64

日期时间

timedelta[ns]

时间差值

category

有限长度的文本列表虽然Python会对读入的数据进行软转换,即自动判定读入的数据类型,但有时读入Python的数据类型并不与预期相符,这时需要对数据类型进行检测和转换。Python中常见的数据类型检测和转换函数如下表所示。常用Python数据格式转换函数函数名格式作用dtypesDataFrame.dtypes查看DataFrame中各列的数据类型dtypeseries.dtype查看series的数据类型select_dtypesDataFrame.select_dtypes(include=None,exclude=None)通过输入的类型选取满足条件的列astypeSeries.astype(dtype,copy=True,errors=’raise’,**kwargs)DataFrame.astype(dtype,copy=True,errors=’raise’,**kwargs)将指定的列强制转换为指定的类型to_numericto_numeric()将指定对象转换为整型常用的数据类型还包括了时间类型,通过读取时间类型数据能够获取到对应的年月日和星期等信息。但时间类型数据在读入Python后常常以字符串形式出现,无法方便实现大部分与时间相关的分析。常用Python数据格式转换函数pandas库中提供了6种时间相关的类,如下表所示。其中Timestamp是时间类中最基础的,也是最为常用的。在多数情况下,时间相关的字符串都会转换成为Timestamp。Timestamp类型时间是有限制的,通常该数值会被限制在1970年至2038年之间。常用Python数据格式转换函数类名称说明Timestamp最基础的时间类。表示某个时间点。在绝大多数的场景中的时间数据都是Timestamp形式的时间Period表示单个时间跨度,或者某个时间段,例如某一天、某一小时等Timedelta表示不同单位的时间,如1天、1.5小时、3分钟、4秒等,而非具体的某个时间段DatetimeIndex一组由Timestamp构成的Index,可以作为Series或者DataFrame的索引PeriodtimeIndex一组由Period构成的Index,可以作为Series或者DataFrame的索引TimedeltaIndex一组由Timedelta构成的Index,可以作为Series或者DataFrame的索引Python中对数据库进行读写主要通过pandas库进行,pandas库中常见的对数据库进行读取操作的函数为read_sql、read_sql_table和read_sql_query,使用格式如下。pandas.read_sql_table(table_name,con,schema=None,index_col=None,coerce_float=True,columns=None)pandas.read_sql_query(sql,con,index_col=None,coerce_float=True)pandas.read_sql(sql,con,index_col=None,coerce_float=True,columns=None)常用Python数据读写函数1.数据库读写函数这3个函数的常用参数及其作用基本一致,如下表所示。常用Python数据读写函数参数说明table_name接收string。表示读取的数据的表名。无默认值sql接收string。表示传递的sql语句。无默认值con接收数据库连接。表示数据库连接信息。无默认值index_col接收int,sequence或者False。表示设定的列作为行名,如果是一个数列则是多重索引。默认为Nonecoerce_float接收boolean。将数据库中的decimal类型的数据转换为pandas中的float64类型的数据。默认为Truecolumns接收list。表示读取数据的列名。默认为None使用pandas将数据写入数据库时主要使用to_sql方法,其语法如下。DataFrame.to_sql(name,con,schema=None,if_exists=’fail’,index=True,index_label=None,dtype=None)常用Python数据读写函数to_sql方法的常用参数及其说明如下表所示。常用Python数据读写函数参数说明name接收string。代表数据库表名。无默认值con接收数据库连接。无默认值if_exists接收fail、replace、append。fail表示如果表名存在则不执行写入操作;replace表示如果存在,将原数据库表删除,再重新创建;append则表示在原数据库表的基础上追加数据。默认为failindex接收boolean。表示是否将行索引作为数据传入数据库。默认Trueindex_label接收string或者sequence。代表是否引用索引名称,如果index参数为True,此参数为None,则使用默认名称。如果为多重索引必须使用sequence形式。默认为Nonedtype接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为Nonepandas库提供了read_table来读取文本文件,read_csv函数来读取CSV文件,使用格式如下。pandas.read_table(filepath_or_buffer,sep=’\t’,header=’infer’,names=None,index_col=None,dtype=None,engine=None,nrows=None)pandas.read_csv(filepath_or_buffer,sep=’\t’,header=’infer’,names=None,index_col=None,dtype=None,engine=None,nrows=None)常用Python数据读写函数2.文件读写函数read_table和read_csv函数的参数基本相同,常用参数及其说明如下表所示。常用Python数据读写函数参数说明filepath接收string。代表文件路径。无默认值sep接收string。代表分隔符。read_csv默认为“,”,read_table默认为制表符“[Tab]”header接收int或sequence。表示将某行数据作为列名。默认为infer,表示自动识别names接收array。表示列名。默认为Noneindex_col接收int、sequence或False。表示索引列的位置,取值为sequence则代表多重索引。默认为Nonedtype接收dict。代表写入的数据类型(列名为key,数据格式为values)。默认为Noneengine接收c或者python。代表数据解析引擎。默认为None时使用c作为引擎nrows接收int。表示读取前n行。默认为Nonepandas中的to_csv函数实现了以CSV文件格式存储文件,使用格式如下。DataFrame.to_csv(path_or_buf=None,sep=’,’,na_rep=”,columns=None,header=True,index=True,index_label=None,mode=’w’,encoding=None)常用Python数据读写函数to_csv函数的常用参数及其说明如下表所示。常用Python数据读写函数参数说明path_or_buf接收string。代表文件路径。默认为Nonesep接收string。代表分隔符。默认为“,”na_rep接收string。代表缺失值。默认为“”columns接收list。代表写出的列名。默认为Noneheader接收boolean,代表是否将列名写出。默认为Trueindex接收boolean,代表是否将行名(索引)写出。默认为Trueindex_labels接收sequence。表示索引名。默认为Nonemode接收特定string。代表数据写入模式。默认为wencoding接收特定string。代表存储文件的编码格式。默认为Nonepandas提供了read_excel函数来读取“xls”和“xlsx”两种Excel文件,其使用格式如下。pandas.read_excel(io,sheetname=0,header=0,index_col=None,names=None,dtype=None)常用Python数据读写函数read_excel函数的常用参数及其说明如下表所示。常用Python数据读写函数参数说明io接收string。表示文件路径。无默认值sheetname接收string、int。代表excel表内数据的分

温馨提示

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

评论

0/150

提交评论