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=" ")
# 获取日期数据