pandas札记6_数据读取、存储

浏览: 1185
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

读取文件

  • 将表格型数据读取为DF对象的函数
  • read_csv:默认分隔符是逗号
  • read_table:默认分隔符是制表符('\t')
  • read_excel:读取Excel文件
  • read_sql:读取SQL数据文件

image.png

# 查看文件内容window用type
# linuxz中cat命令
!type example1.csv

# 结果
a,b,c,d,message
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo
# 默认将第一行作为列属性columns
# 索引(行属性index)默认是从0开始
df = pd.read_csv("example1.csv")
df

image.png

pd.read_csv("example1.csv", sep=",") # 指定分隔符

image.png

导入数据时,自定义列属性

  • header:默认的
  • names:指定列属性,列表形式
# 重点:自己创建列属性
# 通过header默认列名
# 使用names自定义列名
print(pd.read_csv("example2.csv", header=None))
pd.read_csv("example2.csv", names=["a", "b", "c" ,"d"])

image.png

# index_col参数指定为索引值
names=["a", "b", "c" ,"d", "message"] # 指定行属性
pd.read_csv("example2.csv", names=names, index_col="message") # 指定message为索引
# index_col中传入多个值,列表形式:parsed = pd.read_csv('examples/csv_mindex.csv',index_col=['key1', 'key2'])

image.png


  • 非固定分隔符去分隔字段的表格处理:

  • 空白符或者其他模式来分隔字段,通过seq指定分隔字段

  • 列名比数据行少,read_table将第一列作为DF的索引



    image.png

  • pd.read_csv("example2.csv",skiprows=[0, 2, 4])

  • 打开文件时:跳过索引为0,2,4的行数据

缺失值处理

  • 数据不存在或者为空字符串
  • 数据使用某个标记值表示
  • pandas通过标记值识别,NA或NULL
# 指定分隔符:sep
result = pd.read_csv("example1.csv", sep=",")
result
# 结果
a b c d message
0 1 2 3 4 hello
1 5 6 7 8 world
2 9 10 11 12 foo

# 判断元素是否为NaN
pd.isnull(result)

image.png

读取文件参数说明

image.png

按块读取文件

读取小文件

  • 读取文件小部分
  • 逐块读取文件进行迭代
# pandas显示更紧些
pd.options.display.max_rows = 15
result = pd.read_csv(r"D:\Python\datalearning\PandasLearning\NBA_Data.csv", encoding="gb18030")
result.head()

image.png

  • 读取指定的行数:nrows = 6
result = pd.read_csv(r"D:\Python\datalearning\PandasLearning\NBA_Data.csv", 
nrows=6, encoding="gb18030") # 指定读取6行数据
result

image.png

按块读取文件chunksize

  • chunksize:指定大小
  • get_chunk:任意大小
# chunksize 按照块读取数据
# get_chunk 读取任意块的大小
chunker = pd.read_csv(r"D:\Python\datalearning\PandasLearning\NBA_Data.csv", encoding="gb18030", chunksize=1000)
tot = pd.Series([])
for piece in chunker:
tot = tot.add(piece['得分'].value_counts(), fill_value=0)

tot = tot.sort_values(ascending=False)
# 取出排名的前10位
tot[:10]

image.png

推荐 0
本文由 皮大大 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册