不容错过的Pandas小技巧万能转格式

数据分析,如何能错过Pandas。

现在,数据科学家RomanOrac分享了他在工作中相见恨晚的Pandas使用技巧。

了解了这些技巧,能让你在学习、使用Pandas的时候更加高效。

话不多说,一起学习一下~

Pandas实用技巧

用Pandas做数据分析,最大的亮点当属DataFrame。不过,在展示成果的时候,常常需要把DataFrame转成另一种格式。

Pandas在这一点上其实十分友好,只需添加一行代码。

DataFrame转HTML

如果你需要用HTML发送自动报告,那么to_html函数了解一下。

比如,我们先设定这样一个DataFrame:

importnumpyasnpimportpandasaspdimportrandomn=10df=pd.DataFrame({"col1":np.random.random_sample(n),"col2":np.random.random_sample(n),"col3":[[random.randint(0,10)for_inrange(random.randint(3,5))]for_inrange(n)],})

用上to_html,就可以将表格转入html文件:

df_html=df.to_html()withopen(‘analysis.html’,‘w’)asf:f.write(df_html)

与之配套的,是read_html函数,可以将HTML转回DataFrame。

DataFrame转LaTeX

如果你还没用过LaTeX写论文,强烈建议尝试一下。

要把DataFrame值转成LaTeX表格,也是一个函数就搞定了:

df.to_latex()

DataFrame转Markdown

如果你想把代码放到GitHub上,需要写个README。

这时候,你可能需要把DataFrame转成Markdown格式。

Pandas同样为你考虑到了这一点:

print(df.to_markdown())

注:这里还需要tabulate库

DataFrame转Excel

说到这里,给同学们提一个小问题:导师/老板/客户要你提供Excel格式的数据,你该怎么做?

当然是——

df.to_excel(‘analysis.xlsx’)

需要注意的是,如果你没有安装过xlwt和openpyxl这两个工具包,需要先安装一下。

另外,跟HTML一样,这里也有一个配套函数:read_excel,用来将excel数据导入pandasDataFrame。

DataFrame转字符串

转成字符串,当然也没问题:

df.to_string()5个鲜为人知的Pandas技巧

此前,RomanOrac还曾分享过5个他觉得十分好用,但大家可能没有那么熟悉的Pandas技巧。

1、data_range

从外部API或数据库获取数据时,需要多次指定时间范围。

Pandas的data_range覆盖了这一需求。

importpandasaspddate_from=“-01-01”date_to=“-01-12”date_range=pd.date_range(date_from,date_to,freq=”D”)print(date_range)

freq=“D”/“M”/“Y”,该函数就会分别返回按天、月、年递增的日期。

2、合并数据

当你有一个名为left的DataFrame:

和名为right的DataFrame:

想通过关键字“key”把它们整合到一起:

实现的代码是:

df_merge=left.merge(right,on=‘key’,how=‘left’,indicator=True)

3、最近合并(Nearestmerge)

在处理股票或者加密货币这样的财务数据时,价格会随着实际交易变化。

针对这样的数据,Pandas提供了一个好用的功能,merge_asof。

该功能可以通过最近的key(比如时间戳)合并DataFrame。

举个例子,你有一个存储报价信息的DataFrame。

还有一个存储交易信息的DataFrame。

现在,你需要把两个DataFrame中对应的信息合并起来。

最新报价和交易之间可能有10毫秒的延迟,或者没有报价,在进行合并时,就可以用上merge_asof。

pd.merge_asof(trades,quotes,on=”timestamp”,by=’ticker’,tolerance=pd.Timedelta(‘10ms’),direction=‘backward’)

4、创建Excel报告

在Pandas中,可以直接用DataFrame创建Excel报告。

importnumpyasnpimportpandasaspddf=pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9]]),columns=["a","b","c"])report_name=example_report.xlsxsheet_name=Sheet1writer=pd.ExcelWriter(report_name,engine=xlsxwriter)df.to_excel(writer,sheet_name=sheet_name,index=False)

不只是数据,还可以添加图表。

#definetheworkbookworkbook=writer.bookworksheet=writer.sheets[sheet_name]#createachartlineobjectchart=workbook.add_chart({type:line})#configuretheseriesofthechartfromthespreadsheet#usingalistofvaluesinsteadofcategory/valueformulas:#[sheetname,first_row,first_col,last_row,last_col]chart.add_series({categories:[sheet_name,1,0,3,0],values:[sheet_name,1,1,3,1],})#configurethechartaxeschart.set_x_axis({name:Index,position_axis:on_tick})chart.set_y_axis({name:Value,major_gridlines:{visible:False}})#placethechartontheworksheetworksheet.insert_chart(E2,chart)#outputtheexcelfilewriter.save()

注:这里需要XlsxWriter库

5、节省磁盘空间

Pandas在保存数据集时,可以对其进行压缩,其后以压缩格式进行读取。

先搞一个MB的DataFrame,把它存成csv。

df=pd.DataFrame(pd.np.random.randn(,))df.to_csv(‘random_data.csv’,index=False)

压缩一下试试:

df.to_csv(‘random_data.gz’,



转载请注明地址:http://www.sanbaicaoasb.com/scry/8334.html
  • 上一篇文章:
  • 下一篇文章:
  • 热点文章

    • 没有热点文章

    推荐文章

    • 没有推荐文章