pandas小记:pandas数据输入输出

版权声明:本文为博主皮皮http://blog.csdn.net/pipisorry原创文章,未经博主允许不得转载。 https://blog.csdn.net/pipisorry/article/details/52208727

http://blog.csdn.net/pipisorry/article/details/52208727

输出格式控制

pandas dataframe数据全部输出,数据太多也不用省略号表示。

pd.set_option('display.max_columns',None)

或者

with option_context('display.max_rows', 10, 'display.max_columns', 5):

数据输入输出

数据pickling

pandas数据pickling比保存和读取csv文件要快2-3倍(lz测试不准,差不多这么多)。

ltu_df.to_pickle(os.path.join(CWD, 'middlewares/ltu_df'))
ltu_df = pd.read_pickle(os.path.join(CWD, 'middlewares/ltu_df'))

[read_pickle]

不过lz测试了一下,还是直接pickle比较快,比pd.read_pickle快2倍左右。

 
pickle.dump(ltu_df, open(os.path.join(CWD, 'middlewares/ltu_df.pkl'), 'wb'))

ltu_df = pickle.load(open(os.path.join(CWD, 'middlewares/ltu_df.pkl'), 'rb'))

CSV

通常来说,数据是CSV格式,就算不是,至少也可以转换成CSV格式。

读取csv文件 read_csv

lines = pd.read_csv(checkin_filename, sep='\t', header=None,names=col_names, parse_dates=[1], skip_blank_lines=True, index_col=0).reset_index()
dateparse = lambda dates: pd.datetime.strptime(dates, '%Y-%m')
data = pd.read_csv('AirPassengers.csv', parse_dates='Month', index_col='Month',date_parser=dateparse)

参数:

skiprows=2,表示前面两行[0, 1]都不读入,等价于skiprows=[0, 1];

header=None第0行不作为列名;

names=[''] 指定列名;

parse_dates=[]  解析指定行为date类型;

index_col=0   指定某列为行索引,否则自动索引0, 1, .....。reset_index()是其反操作。

parse_dates:这是指定含有时间数据信息的列。正如上面所说的,列的名称为“月份”。
index_col:使用pandas 的时间序列数据背后的关键思想是:目录成为描述时间数据信息的变量。所以该参数告诉pandas使用“月份”的列作为索引。
date_parser:指定将输入的字符串转换为可变的时间数据。Pandas默认的数据读取格式是‘YYYY-MM-DD HH:MM:SS’。如需要读取的数据没有默认的格式,就要人工定义。这和dataparse的功能部分相似,这里的定义可以为这一目的服务。[python模块 - 时间模块 ]

converters : dict, default None: Dict of functions for converting values in certain columns. Keys can eitherbe integers or column labels.将数据某列按特定函数转化,必然可以取代自定义时date_parser和parse_dates两个参数呀。

如解析时间时想返回时间戳的浮点数表示时:

def dateParse(s): return float(__import__('datetime').datetime.timestamp(__import__('dateutil.parser').parser.parse(s)))
df = pd.read_csv(os.path.join(CA_DATASET_DIR, checkin_ca), header=0, sep='\t', converters={'Time(GMT)': dateParse})

[Reading from a csv file]

Note: 读取速度比numpy.loadtxt快多了,近10倍,包括转换成list的时间。

# Reading data from web

data_url="https://raw.githubusercontent.com/alstat/Analysis-with-Programming/master/2014/Python/Numerical-Descriptions-of-the-Data/data.csv"

df =pd.read_csv(data_url)

写入csv文件Writing to a csv file

data_df.to_csv(path,index=False)

在参数中加上index=False,否则写入的数据会默认加上index,大多数是没有用的。

HDF5

Reading and writing to HDFStores

Writing to a HDF5 Store

In [138]: df.to_hdf('foo.h5','df')

Reading from a HDF5 Store

In [139]: pd.read_hdf('foo.h5','df')
Out[139]: 
                    A          B         C          D
2000-01-01   0.266457  -0.399641 -0.219582   1.186860
2000-01-02  -1.170732  -0.345873  1.653061  -0.282953
...               ...        ...       ...        ...
2002-09-25 -10.216020  -9.480682 -3.933802  29.758560
2002-09-26 -11.856774 -10.671012 -3.216025  29.369368

[1000 rows x 4 columns]

Excel

好像如果使用pd.read_excel要安装xlrd:pip install xlrd

Writing to an excel file

data_df.to_csv('a.xlsx', index=False, sheet_name='Sheet1')

Reading from an excel file

pandas.read_excel(iosheet_name=0header=0names=Noneindex_col=Noneusecols=Nonesqueeze=Falsedtype=Noneengine=Noneconverters=Nonetrue_values=Nonefalse_values=Noneskiprows=Nonenrows=Nonena_values=Noneparse_dates=Falsedate_parser=Nonethousands=Nonecomment=Noneskipfooter=0convert_float=True**kwds)

参数:converters:读数据的时候使用converters指定列数据的数值类型 pd.read_excel('a.xlsx',converters={0: str})。

sheet_name: None就是读取所有的sheet,返回的就是一个ordereddict;指定就只读取指定sheet,只有一个返回的就是dataframe。

header:指定header所在列 (0开始)。

data_df_dict = pd.read_excel(filename, sheet_name=None, header=0)
data_df = pd.concat(data_df_dict.values())

Gotchas

If you are trying an operation and you see an exception like:

>>> if pd.Series([False, True, False]):
    print("I was true")
Traceback
    ...
ValueError: The truth value of an array is ambiguous. Use a.empty, a.any() or a.all().

See Comparisons for an explanation and what to do.

See Gotchas as well.

[CSV & Text files]

from: http://blog.csdn.net/pipisorry/article/details/52208727

ref:  [IO Tools (Text, CSV, HDF5, ...)]

猜你喜欢

转载自blog.csdn.net/pipisorry/article/details/52208727