Pandas-DataFrame总结(构造与读入数据)
来源:互联网 发布:基金开户数据 编辑:程序博客网 时间:2024/06/07 07:24
简述:
Pandas的重要数据结构DataFrame在大数据运算中起着十分重要的作用,尤其是他的向量形式在大数据计算中很高效,DataFrame的基本结构如下:
字段1 字段2 字段3 ... 字段n
索引0 v01 v02 v03 v0n
索引1 v11 v12 v13 v1n
索引2 v21 v22 v23 v2n
...........................................................
索引m vm1 vm2 vm3 vmn
这是最简单的创建形式,传入的list一般是多维度的,且每一维度元素数目如果不一致,则DataFrame默认字符型缺失值为None,数值型缺失值为NaN(not a number);当list中传入的数据类型不一样时,遵循如下规则:
① list中如果有string类型则默认DataFrame该列为string类型
② list中如果是整数和小数,则小数对应的列是float类型
columns指定的是列名(也就是之前结构中的字段名)。columns参数传入的sequence的长度与多维数组中的列数等长,否则会报错。
其他创建DataFrame的参数还有:
① index(索引),他在官方文档中的定义为’Index to use for resulting frame. Will default to np.arange(m) ifno indexing‘,即默认是从0到m-1 (行数-1)。也可以自行设置一个序列用于作为索引,该序列中的元素数目必须与行数一致。
② dtype(类型),在官方文档中的解释为’Data type to force, otherwise infer‘,即用于强制转换数据类型,如果不指定则由Python自行推导。dtype的强制转换能力不是无限的,不可能将string转换为数值类。
① filepath_or_buffer:这个是第一个参数,可以是字符串也可以是一个代表着文件路径的变量,是所要读取的文件的路径。
② sep:是separate的缩写,在文本文件中不同列的数据通常情况下是用相同的字符间隔开的,常用的有逗号、制表符、空格等。该参数默认是制表符,如果是其他形式的间隔应在方法中设置该参数。
③ header :设置某行作为字段名,默认是索引值为0的行(第一行)。如果文件中没有列名,应设置该值为 None。
④ names:一个list,元素是DataFrame的列名,在文件中没有header列且明确指明参数 header = None时使用。list中的元素个数一定与DataFrame的列数相同。
⑤ index_col:是一个int、序列或者是False,默认值是None。这个参数的作用是选文件中的一列数据作为DataFrame的索引值。int是文件中列对应的索引;输入的序列是文件中该列的列名(这个比较常用);Flase则是强制pandas不选用文件的第一列作为DataFrame的索引。
⑥ usecols:当不必要加载文件中所有列进入DataFrame时,可以指定加载的列。官方文档中说明'a valid array-likeusecols parameter would be [0, 1, 2] or [‘foo’, ‘bar’, ‘baz’].',即usecols的形式有两种,一种是数值类型的list,数值对应的是相应列在文件中的索引;另一种是字符串类型的list,其中的元素对应的是文件中对应列的列名。
⑦ nrows : int, default None,这个参数是需要读取的行数(从文件头开始算起)。
⑧ na_values : scalar, str, list-like, or dict, 默认是 None,这个参数设定的是一组被视为NA/NaN的值。
⑨ true_values : list, 默认是None。官方文档解释'Values to consider as True',被认定为是’真‘的值。
⑩ false_values : list, 默认为None,与true_values相似,是一组被视为’假‘得值。
还有一个是chunksize,这个参数以后详细说明。
read_csv() 和 read_table()很相似,两个都常被用于读取文本文件,区别是二者sep参数的默认值不同。前者的sep默认为逗号;后者则是默认为制表符。
未完待续~
Pandas的重要数据结构DataFrame在大数据运算中起着十分重要的作用,尤其是他的向量形式在大数据计算中很高效,DataFrame的基本结构如下:
字段1 字段2 字段3 ... 字段n
索引0 v01 v02 v03 v0n
索引1 v11 v12 v13 v1n
索引2 v21 v22 v23 v2n
...........................................................
索引m vm1 vm2 vm3 vmn
一. DataFrame的构造方式
1. 通过list构造DF
# -*- coding:utf-8 -*-import pandas as pddf = pd.DataFrame([data = ['a', 'b', 'c'], ['d', 'e', 'f'],['g', 'h', 'i']],columns = ['field1', 'field2', 'field3'])
这是最简单的创建形式,传入的list一般是多维度的,且每一维度元素数目如果不一致,则DataFrame默认字符型缺失值为None,数值型缺失值为NaN(not a number);当list中传入的数据类型不一样时,遵循如下规则:
① list中如果有string类型则默认DataFrame该列为string类型
② list中如果是整数和小数,则小数对应的列是float类型
columns指定的是列名(也就是之前结构中的字段名)。columns参数传入的sequence的长度与多维数组中的列数等长,否则会报错。
其他创建DataFrame的参数还有:
① index(索引),他在官方文档中的定义为’Index to use for resulting frame. Will default to np.arange(m) ifno indexing‘,即默认是从0到m-1 (行数-1)。也可以自行设置一个序列用于作为索引,该序列中的元素数目必须与行数一致。
② dtype(类型),在官方文档中的解释为’Data type to force, otherwise infer‘,即用于强制转换数据类型,如果不指定则由Python自行推导。dtype的强制转换能力不是无限的,不可能将string转换为数值类。
2. 通过元组构造DF
形式与list构建DataFrame相近,只是将list换成了tuple类型。
3. 通过字典构造DF
# -*- coding:utf-8 -*-import pandas as pddf = pd.DataFrame({'goods':['coke cola', 'eggplant','condom'], 'quantity':[12,3,1], 'price':[20,12,80]})简单的来说,利用Python的字典构造DataFrame就是讲DataFrame类中的data和columns参数合二为一,键值就是生成的DataFrame的列名。由于Python的字典是无序的,所以在不指定列的顺序的情况下,dict生成的DataFrame的列名顺序是随机的,如果列的顺序很重要,那么久再次对DataFrame中的columns参数进行设置,将字典中原有的键值进行排序。注意,此时上传的columns必须与dict中的键值一致,否则生成失败。
二. 读取数据生成DataFrame
1. 读取文本文件
读取文本文件所用的函数一般有两个① read_csv() 和 ② read_table(),文本文件一般读取的是csv格式和txt格式。
#-*- coding:utf-8 -*-import pandas as pdres = pd.read_table('sale.txt', sep = '\t', header = None, usecol = [1,3,4], names = ['goods','quantity','price'])这是read_table()最基本的使用,该方法中常用的参数如下:
① filepath_or_buffer:这个是第一个参数,可以是字符串也可以是一个代表着文件路径的变量,是所要读取的文件的路径。
② sep:是separate的缩写,在文本文件中不同列的数据通常情况下是用相同的字符间隔开的,常用的有逗号、制表符、空格等。该参数默认是制表符,如果是其他形式的间隔应在方法中设置该参数。
③ header :设置某行作为字段名,默认是索引值为0的行(第一行)。如果文件中没有列名,应设置该值为 None。
④ names:一个list,元素是DataFrame的列名,在文件中没有header列且明确指明参数 header = None时使用。list中的元素个数一定与DataFrame的列数相同。
⑤ index_col:是一个int、序列或者是False,默认值是None。这个参数的作用是选文件中的一列数据作为DataFrame的索引值。int是文件中列对应的索引;输入的序列是文件中该列的列名(这个比较常用);Flase则是强制pandas不选用文件的第一列作为DataFrame的索引。
⑥ usecols:当不必要加载文件中所有列进入DataFrame时,可以指定加载的列。官方文档中说明'a valid array-likeusecols parameter would be [0, 1, 2] or [‘foo’, ‘bar’, ‘baz’].',即usecols的形式有两种,一种是数值类型的list,数值对应的是相应列在文件中的索引;另一种是字符串类型的list,其中的元素对应的是文件中对应列的列名。
⑦ nrows : int, default None,这个参数是需要读取的行数(从文件头开始算起)。
⑧ na_values : scalar, str, list-like, or dict, 默认是 None,这个参数设定的是一组被视为NA/NaN的值。
⑨ true_values : list, 默认是None。官方文档解释'Values to consider as True',被认定为是’真‘的值。
⑩ false_values : list, 默认为None,与true_values相似,是一组被视为’假‘得值。
还有一个是chunksize,这个参数以后详细说明。
read_csv() 和 read_table()很相似,两个都常被用于读取文本文件,区别是二者sep参数的默认值不同。前者的sep默认为逗号;后者则是默认为制表符。
2. 读取Excel表格数据
pandas模块中,read_excel()方法用于读取 .xls和 .xlsx文件
#-*- coding:utf-8 -*-import pandas as pddf = pd.read_excel(io='***.xlsx',sheetname=1,header=0,index_col= None,names = None,dtype=None )上方代码是read_excel的一个简单案例,read_excel中的常见参数解析如下:
① io: io变量是所读取文件的路径,是必填参数。
② sheetname: excel表格中存在着不同的sheet,读取时如果对sheet没要求则pandas默认读取索引为0的sheet。官方文档中的解释'string, int, mixed list of strings/ints, or None, default 0',即 sheetname参数可以是整数、字符串、列表或者None。当为int时,指的是sheet的索引;string是相应的sheet的名称;list中元素可以是sheet的索引也可以是sheet的名称;当定义该变量为None时,是该excel表格中所有的sheet。
③ index_col:默认是None(就是没有作为索引的MySQL数据表的列),如果有要作为索引的列,则填入该列在数据表中的名称 。
④ columns:当不读取table中所有的列时,输入该参数,形式是list,元素是table中所要读取的列名。
read_sql_table()
#-*- coding:utf-8 -*-import pandas as pdimport MySQLdb as mdbconn = mdb.connect(host = 'localhost',port=3306,user= 'root',passwd='*****',db = 'test')df = pd.read_sql_table(table_name='table1',con=conn,index_col='col1',columns=['col1','col2'...])read_sql_table()方法与read_sql()方法的一个区别就是无法对读取的数据限定条件(如SQL的where语句)。其参数与read_sql()方法极其相似只是第一个参数table_name输入的是数据库中所要读取的表的名字。
三. 生成数据的预览
1. shape属性
#-*- coding:utf-8 -*-import pandas as pdimport MySQLdb as mdbconn = mdb.connect(host = 'localhost',port=3306,user= 'root',passwd='*****',db = 'test')df = pd.read_sql_table(table_name='table1',con=conn,index_col='col1',columns=['col1','col2'...])df.shapeshape属性返回的是一个tuple,二维的DataFrame显示的是(x,y),其中x是行数,y是列数。Pandas的Dataframe的shape属性输出的不是索引,而是实实在在的几行几列,所以要格外注意。
2. columns属性
#-*- coding:utf-8 -*-import pandas as pd#-*- coding:utf-8 -*-import pandas as pdimport MySQLdb as mdbconn = mdb.connect(host = 'localhost',port=3306,user= 'root',passwd='*****',db = 'test')df = pd.read_sql_table(table_name='table1',con=conn,index_col='col1',columns=['col1','col2'...])df.columns返回的形式是 Index(['column1','column2',...'colmun N'])这样的形式,显示的是各列的名字。
3.describe属性
#-*- coding:utf-8 -*-import pandas as pdimport MySQLdb as mdbconn = mdb.connect(host = 'localhost',port=3306,user= 'root',passwd='*****',db = 'test')df = pd.read_sql_table(table_name='table1',con=conn,index_col='col1',columns=['col1','col2'...])df.describe
describe()方法用于描述DataFrame,其中有个 include参数,写入的是字符串或者一个列表,里面的元素是要查看的数据类型。
未完待续~
阅读全文
1 0
- Pandas-DataFrame总结(构造与读入数据)
- pandas.DataFrame.any与pandas.DataFrame.all
- Pandas读入Excel数据表格与数据简单处理
- pandas DataFrame数据转为list
- pandas dataframe 数据框 基本概念
- NumPy.npy与pandas DataFrame
- Spark RDD 与 Pandas Dataframe
- 【转】pandas DataFrame 逐行操作(可修改数据)
- pandas数据框(DataFrame)方法快速入门,简要整理
- pandas教程---------DataFrame选择数据(12/4)
- pandas教程----------Dataframe筛选数据(12/4)
- Spark与Pandas中DataFrame对比(详细)
- Spark与Pandas中DataFrame对比(详细)
- [转]Spark与Pandas中DataFrame对比(详细)
- Pandas 数据结构(Series,DataFrame)
- pandas DataFrame 索引(二)
- pandas.dataframe 转换(笔记)
- Pandas读取MySQL数据到DataFrame
- Ldap用户属性太少的问题
- 线程池实现
- 手动安装openstack并配置虚拟化集成VM
- StringBuffer与StringBuilder的区别及实现原理
- 优秀博客推荐(持续更新)
- Pandas-DataFrame总结(构造与读入数据)
- 浅谈数据库用户表结构设计,第三方登录
- vijos圆环取数(好题,我不会,来日再补)
- Eclipse开发常用快捷键
- Linux--jdk安装
- 浅谈C/C++中的顺序点和副作用
- printf函数中“va_list 、va_start、 va_arg、 va_end” 使用说明
- Android Studio常用快捷
- 查看本地Java安装是否成功和路径的方法