《利用python进行数据分析》学习笔记(六)

数据加载、存储与文件格式

读写文本格式的数据

这里写图片描述

# 文件带有标题行
df = pd.read_csv('ch06/ex1.csv')
df = pd.read_table('ch06/ex1.csv', sep=',')
# 文件没有标题行
pd.read_csv('ch06/ex2.csv', header=None)
pd.read_csv('ch06/ex2.csv', names=['a', 'b', 'c', 'd', 'message'])

# 如果希望用'message'列来作为索引
names = ['a', 'b', 'c', 'd', 'message']
pd.read_csv('ch06/ex2.csv', names=names, index_col='message')

# 如果希望将多个列做成一个层次化索引
parsed = pd.read_csv('ch06/csv_mindex.csv', index_col=['key1', 'key2'])

# 文件各个字段拥有数量不定的空白符分隔,需要使用正则表达式\s+
result = pd.read_table('ch06/ex3.txt', sep='\s+')

# 运用skiprows跳过文件的第一行、第三行和第四行
pd.read_csv('ch06/ex4.csv', skiprows=[0, 2, 3])

# 表示缺失值,即将对应的值变成缺失值
sentinels = {'message': ['foo', 'NA'], 'something': ['two']}
pd.read_csv('ch06/ex5.csv', na_values=sentinels)

这里写图片描述

逐块读取文本文件
# 通过nrows指定读取行数
pd.read_csv('ch06/ex6.csv', nrows=5)

# 逐块读取文件,设置chunksize(每块的行数)
chunker = pd.read_csv('ch06/ex6.csv', chunksize=1000)
# out of chunker 是 pandas.io.parsers.TextParser

# read_csv所返回的这个TextParser对象使你可以根据chunksize对文件进行逐块迭代
chunker = pd.read_csv('ch06/ex6.csv', chunksize=1000)
tot = Series([])
for piece in chunker:
    tot = tot.add(piece['key'].value_counts(), fill_value=0)
tot = tot.sort_values(ascending=False)
将数据写出到文本格式
data = pd.read_csv('ch06/ex5.csv')
# 利用to_csv,将数据写到一个以逗号分隔的文件中
data.to_csv('ch06/out.csv')
# 使用其他分隔符
data.to_csv(sys.stdout, sep='|')
# 默认缺失值在输出结果中会被表示为空字符串,可以改变na_rep来改变标记值
data.to_csv(sys.stdout, na_rep='NULL')
# 可以设置行列标签
data.to_csv(sys.stdout, index=False, header=False)
data.to_csv(sys.stdout, index=False, columns=['a', 'b', 'c'])
# 利用from_csv将csv读取成series
Series.from_csv('ch06/tseries.csv', parse_dates=True)
手工处理分隔符格式
# 对于ex7.csv中的数据进行重建
lines = list(csv.reader(open('ch06/ex7.csv')))
header, values = lines[0], lines[1:]
data_dict = {h: v for h, v in zip(header, zip(*values))}
data_dict

# 通过定义csv.Dialect的一个子类来定义出新格式
class my_dialect(csv.Dialect):
    lineterminator = '\n'
    delimiter = ';'
    quotechar = '"'
    quoting = csv.QUOTE_MINIMAL
# 运用新格式进行csv的写操作
with open('mydata.csv', 'w') as f:
    writer = csv.writer(f, dialect=my_dialect)
    writer.writerow(('one', 'two', 'three'))
    writer.writerow(('1', '2', '3'))
    writer.writerow(('4', '5', '6'))
    writer.writerow(('7', '8', '9'))

这里写图片描述

二进制数据格式

# 将数据保存为二进制文件,再将其读取为DataFrame
frame = pd.read_csv('ch06/ex1.csv')
frame.to_pickle('ch06/frame_pickle')
pd.read_pickle('ch06/frame_pickle')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值