# -*- coding:UTF-8 -*- __autor__ = 'zhouli' __date__ = '2019/2/13 21:38' import pandas as pd firsts = pd.DataFrame( { 'val1': 1.0, 'val2': [1, 2, 3, 4], 'val3': ["test", "trains", "tony", "stark"], 'val4': 'iron_man' } ) print(firsts) >>> val1 val2 val3 val4 0 1.0 1 test iron_man 1 1.0 2 trains iron_man 2 1.0 3 tony iron_man 3 1.0 4 stark iron_man
可以看到的是
①pandas会自动帮我们做好了填充,非常方便,但是这也是一个容易出错的点
③这种方式是以列的形式赋值
pandas的数据结构:
Pandas的基本数据结构是Series和DataFrame,顾名思义,Series就是序列,类似一维数组
DataFrame则是相当一张二维表格,类似二维数组,他的每一个列都是一个Series。为了定位Series中的元素,pandas提供了index对象,每一个Series都会带一个对应的index,用于标记不同的元素,index的内容不一定是数字,可以是字母,中文等,类似sql的主键。
类似的DataFrame相当于多个带有同样index的series的组合(本质是series的容器),每个Series都带有唯一的表头,用来标识不同的Series
pd.Series([1,2,3,4]) pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd']) pd.Series({'a':1, 'b':2})
Series是将list和dict结合在一起的新数据类型,
st=pd.Series([1,2,3,4], index=['a', 'b', 'c', 'd']) st[['a', 'b']] # 花式索引 st['a'] # 标签索引 st[0] # 下标索引
举个栗子:
sr = pd.Series(np.arange(20)) sr2 = sr[10:].copy()
sr是什么?
sr2是什么?
那么sr2[10]结果为10
因为[]内默认是按照标签索引来解释,那如果就想用默认的索引怎么办?
sr2.iloc[]代表使用下标(当有冲突的时候)
sr2.loc[]代表使用标签
Series---数据对齐
那么如何按照行的形式来建立数据呢?
pd.DataFrame( data=None, # 数据列表,字典格式时直接同事提供变量名 columns=None # 变量名列表 )
import pandas as pd data = [ [1, "test"], [2, "trains"], [3, "tony"], [4, "stark"], ] colums = ["val1", "val2"] rows = pd.DataFrame( data=data, # 数据列表,字典格式时直接同事提供变量名 columns=colums # 变量名列表 ) print(rows) >>> val1 val2 0 1 test 1 2 trains 2 3 tony 3 4 stark
利用pandas读入文本格式数据文件
import pandas as pd pd.read_csv( filepath_or_buffer='', # 要读入文件的路径 sep=',', # 列分隔符 header='infer', # 指定数据中第几行作为变量名 names=None, # 自定义变量名列表 index_col=None, # 将会被用作索引的列名,多列时只能使用序号列表 usecols=None, # 指定只读入某些列,使用索引列表或名称列表均可 # (0, 1, 3), ["名次", "学校名称", ""] encoding=None, # 读入文件的编码方式 na_values='' # 指定将被读入为缺失值的数值列表,默认下列数据被读入 ''' '','#N/A','#N/A N/A', '#NA', 'NULL'等 ''' ) pd.read_table() # 更加通用的文本读取命令
那这两个方法有什么读取文本的命令基本上一致,最大的区别的地方在于sep
read_csv是',',而另一个是sep='\t',即tab符号
举个栗子:
这个是中国高校排行榜
high_school = pd.read_csv("high_school.csv", encoding='gbk') print(high_school)
结果如下:
如果不适用read_csv,而是采用read_rable
结果就是这样
但是注意的是,table是按照\t来的,所以read_table的读取方式是整行读取,所以没有分割
数据的导入与导出:
1,Excel文件的读入:
high_school = pd.read_excel("high_school1.xlsx", sheet_name="full") print(high_school)
sheet_name写full或者不写都是一样的,因为默认都是读取第一个sheet
当sheet_name写0的时候也是相当于读取第一个sheet
读入统计软件数据集:
例如读SAS/Stata:
pd.read_sas()
pd.read_stata()
①读入数据表
pd.read_sql
pd.read_sql( sql='', # 需要执行的sql语句/要读入的表名名称 con='', # sqlAlchemy连接引擎名称 index_col=None, # 将被用作索引的列名称 columns=None, # 将提供表名称时,需要读入的列名称list )
pd.read_sql( sql='basic', # 表名为basic con=eng, # sqlAlchemy连接引擎名称eng )
数据的导入导出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。