一些数据载入函数,如pandas.read_csv会进行类型推断,由于列的数据类型并非数据格式的一部分。这意味着你没必要指定哪一列是数值、整数、布尔值或字符串。正则表达式
例如:咱们能够使用read_csv将一个以,
分割的文件读入DataFrame。json
df = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex1.csv') print(df)
结果以下:函数
也能够使用read_table,并指定分隔符。3d
df2 = pd.read_table(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex1.csv', sep=',') print(df2)
结果以下:code
有的文件不带表头,要读取该文件,需考虑一些选项。能够容许pandas自动分配默认列名,也能够本身指定列名。对象
data = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex2.csv',header=None) print(data)
data1 = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex2.csv',names=['a','b','c','d','message']) print(data1)
假设想要message列成为返回DataFrame的索引,能够指定位置4的列为索引,或将‘message’传给参数index_col。blog
names = ['a', 'b', 'c', 'd', 'message'] data2 = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex2.csv', names=names, index_col='message') print(data2)
当你想从多个列中造成一个分层索引,须要传入一个包含列序号或列名的列表:索引
parsed = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\csv_mindex.csv',index_col=['key1','key2']) print(parsed)
结果以下:ip
当字段以多种不一样数量的空格分开时,能够使用正则表达式处理。字符串
result = pd.read_table(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex3.csv', sep='\s+') print(result)
因为列名的数量比列数少一个,所以read_table推断第一列为DataFrame索引。
#跳过第1,3,4行 skip_res = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex4.csv', skiprows=[0, 2, 3]) print(skip_res)
# 使输出显示更为紧凑 pd.options.display.max_rows = 10 res = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex6.csv') print(res)
若是你想只读一小部分行(避免读取整个文件),能够指明nrows。
five_rows = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex6.csv', nrows=5) print(five_rows)
为了分块读入文件,能够指定chunksize做为每一块的行数:
chunkers = pd.read_csv(r'C:\Users\Administrator\Downloads\pydata-book-2nd-edition\examples\ex6.csv',chunksize=1000) tot = pd.Series([]) for piece in chunkers: tot = tot.add(piece['key'].value_counts(),fill_value=0) tot = tot.sort_values(ascending=False) print(tot[:10])
还有get_chunk方法,能够容许按照任意大小读取数据块。
能够使用to_csv方法,将数据导出为逗号分隔的文件。
data.to_csv("out.csv")
也能够使用其余分隔符。
# sys.stdout,控制台标准输出 data.to_csv(sys.stdout,sep='|')
缺失值在输出时以空字符串出现,能够使用其余标识值来对缺失值进行标注。
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=[1,2,3])
Series也有to_csv方法。