本文经人工智能新媒体量子比特(公众号ID:QbitAI)授权转载,转载请联系出处。数据分析,怎么能少了Pandas。现在,数据科学家RomanOrac分享了他期待已久的Pandas工作技巧。了解这些技术将使您在学习和使用Pandas时更有效率。话不多说,一起来学习吧~Pandas实用技巧使用Pandas进行数据分析,最大的亮点就是DataFrame。但是,在展示结果的时候,往往需要将DataFrame转换成另一种格式。Pandas在这一点上其实很友好,加一行代码就可以了。DataFrame到HTML如果您需要以HTML格式发送自动报告,请了解to_html函数。比如我们先建立这样一个DataFrame:importnumpyasnpimportpandasasspdimportrandomn=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。DataFrametoLaTeX如果你没有用过LaTeX写过论文,强烈推荐尝试一下。把DataFrame的值转成LaTeX表格,也是一个函数:df.to_latex()DataFrame转Markdown如果想把代码放到GitHub上,需要写README。这时候你可能需要将DataFrame转为Markdown格式。pandas也给你考虑了这个:print(df.to_markdown())注:这里还需要表格库DataFrame转Excel说到这里想请教同学们一个小问题:tutor/boss/customer要你提供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="2019-01-01"date_to="2019-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.最近合并在处理股票或加密货币等金融数据时,价格会随着实际交易而变化。对于这样的数据,Pandas提供了一个有用的函数,merge_asof。此函数可以通过最近的键(例如时间戳)合并DataFrame。例如,您有一个存储报价信息的DataFrame。还有一个存储交易信息的DataFrame。现在,你需要合并两个DataFrame中的相应信息。最新的报价和交易之间可能有10毫秒的延迟,或者没有报价,合并的时候可以使用merge_asof。pd.merge_asof(trades,quotes,on=”timestamp”,by='ticker',tolerance=pd.Timedelta('10ms'),direction='backward')4.在Pandas中创建Excel报表,可以直接使用DataFrame创建Excel报告。importnumpyasnpimportpandasassspddf=pd.DataFrame(np.array([[1,2,3],[4,5,6],[7,8,9]]),columns=["a","b","c"])report_name='example_report.xlsx'sheet_name='Sheet1'writer=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'})#configuretheseriessoftthechartfromthespreadsheet#usingalistofvaluesinsteadofcategory/valueformulas:#[sheetname,first_row,first_col,last_row].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可以在保存数据集的时候对其进行压缩,然后以压缩格式读取。首先创建一个300MB的DataFrame并将其保存为csv。df=pd.DataFrame(pd.np.random.randn(50000,300))df.to_csv('random_data.csv',index=False)尝试压缩:df.to_csv('random_data.gz',compression='gzip',index=False)文件变为136MB。gzip压缩文件可以直接读取:df=pd.read_csv('random_data.gz')这个Pandas的技巧笔记,先到这里吧。大家都记笔记了吗?话不多说,给我看看代码。学习它,使用它
