DataFrame学习一:DataFrame的创建

 

一 DataFrame的创建

1.1 概要

DataFrame是一种表格型数据结构,它含有一组有序的列,每列可以是不同的值。

DataFrame的 行索引index列索引columns

创建方式:

根据dict进行创建,以及读取csv或者txt文件来创建

 

1.2 字典创建

# 数据集 
data = {
   'state':['Ohio','Ohio','Ohio','Nevada','Nevada'],
   'year':[2000,2001,2002,2001,2002],
   'pop':[1.5,1.7,3.6,2.4,2.9]
}
frame = pd.DataFrame(data)
frame

#输出
   pop state   year
0   1.5 Ohio    2000
1   1.7 Ohio    2001
2   3.6 Ohio    2002
3   2.4 Nevada  2001
4   2.9 Nevada  2002

DataFrame的行索引是index,列索引是columns, 我们可以在创建DataFrame时指定索引的值:

# 制定索引值 (行索引 是 index , 列索引 是 columns )
frame2 = pd.DataFrame(data,index=['one','two','three','four','five'],columns=['year','state','pop','debt'])
frame2

#输出
   year    state   pop debt
one 2000    Ohio    1.5 NaN
two 2001    Ohio    1.7 NaN
three   2002    Ohio    3.6 NaN
four    2001    Nevada  2.4 NaN
five    2002    Nevada  2.9 NaN

嵌套字典也可以创建DataFrame,此时外层字典的键作为列,内层键则作为索引:

# pop数据集 
pop = {'Nevada':{2001:2.4,2002:2.9},'Ohio':{2000:1.5,2001:1.7,2002:3.6}}
frame3 = pd.DataFrame(pop)
frame3
#输出
   Nevada  Ohio
2000    NaN 1.5
2001    2.4 1.7
2002    2.9 3.6

用index,columns,values来访问DataFrame的行索引,列索引以及数据值

数据值返回的是一个二维的ndarray

frame2.values
#输出
array([[2000, 'Ohio', 1.5, 0],
      [2001, 'Ohio', 1.7, 1],
      [2002, 'Ohio', 3.6, 2],
      [2001, 'Nevada', 2.4, 3],
      [2002, 'Nevada', 2.9, 4]], dtype=object)

 

1.2 读取文件

 

读取文件生成DataFrame最常用的是read_csv,read_table方法

参数:

参数描述
header 默认第一行为columns,如果指定header=None,则表明没有索引行,第一行就是数据
index_col 默认作为索引的为第一列,可以设为index_col为-1,表明没有索引列
nrows 表明读取的行数
sep或delimiter 分隔符,read_csv默认是逗号,而read_table默认是制表符\t
encoding 编码格式
   

1.3 读取TXT文件

假如有个名为dates.txt的文件,其中内容如下:

20191128, 20191128
20191129, 20191129
20191130, 20191130

 

(1) 观察该文件没有标题行,类似表格的列名,没有则指定header=None,从而避免第一行被当成了标题行

import pandas as pd

dates = pd.read_csv('dates.txt',header=None)  # 获取日期数据
print(dates)   # 直接输出
for ii in dates.index:    # 逐行输出
   print(ii)
   date_time = dates.loc[ii].values
   print(date_time)
   
   

输出结果:

          0         1
0  20191128  20191128
1  20191129  20191129
2  20191130  20191130
0
[20191128 20191128]
1
[20191129 20191129]
2
[20191130 20191130]

Warning:

txt文件中数据是逗号分隔的,而pandas.read_csv默认使用的分隔符就是逗号

 

若为空格分隔:

dates = pd.read_csv('dates.txt', names=['col1','col2'], header=None, sep=" ") 
# 获取日期数据

 

posted @ 2020-11-29 11:50  西西里啊  阅读(656)  评论(0编辑  收藏  举报