作为数据分析师或数据科学家,不可能证明不知道Python中的Pandas库。它已成为Python中组织和清理数据的标准工具。但是,关于Pandas,你确定你已经完全掌握了吗?本文将分享一些罕见但有用的Pandas技巧,可以提高工作效率,让生活更轻松。使用剪贴板创建数据框众所周知,Pandas可以轻松地从CSV、JSON中读取数据,甚至可以使用SQLAlchemy直接从数据库中读取数据,但是您知道Pandas还可以从您所在操作系统的剪贴板中读取数据吗?使用?假设您有一个数据框,其中包含表格的多个Excel文件。现在,其中一张表的部分数据需要用Python处理。你平常都做什么?将数据表中需要用Python处理的数据复制过来。将其粘贴到另一个数据表中。将当前工作表保存到CSV文件。获取新CSV文件的路径。在Python中,使用pd.read_csv('path/to/csv/file')将文件读入PandasDataFrame。当然,其实还有更简单的方法——pd.read_clipboard()。复制所需的数据范围在Python中,如上所示使用pd.read_clipboard(),如果您只想将一些数据加载到Pandas中,则不需要单独的CSV或Excel文件。这个函数也有一些技巧。例如,当遇到日期格式的数据时,可能无法正确加载,如下所示:技巧是向Pandas指示哪一列是需要解析的日期格式。df=pd.read_clipboard(parse_dates=['dob'])Generatedummydatausingthetestmethod有时可能需要生成一些样本数据帧,最常见的方式应该是使用NumPy生成一个具有随机值的数组然后从这个数组中生成DataFrame。如果数据需要有一定的分布,比如正态分布,就必须使用这种方法。但是,在大多数情况下,数据是否呈正态分布并不重要,只要有数据即可。在这种情况下,有一种更简单的方法,即使用pandas.util.testing测试包生成示例数据框。pd.util.testing.makeDataFrame()数据帧的索引将使用随机字符串生成,默认情况下将有4列和30行。如果您需要相同数量的行和列,您可以将testing.N定义为行数,将testing.K定义为列数。pd.util.testing.N=10pd.util.testing.K=5pd.util.testing.makeDataFrame()将数据框输出到压缩文件来源:unsplash数据框可以很容易地输出到文件,例如使用df.to_csv()、df.to_json()等形式。但是,有时您需要压缩文件以节省磁盘空间或用于其他目的。例如,作为一名数据工程师,为了将Pandas数据帧输出为CSV文件并传输到远程服务器,文件需要在发送前进行压缩以节省空间和带宽。通常,一致的解决方案是在使用的调度工具(如Airflow或Oozie)中多做一步,但Pandas可以直接输出压缩文件。因此,只需几步即可完成求解,更加简洁明了。首先使用第二个技巧生成一个随机数据框:pd.util.testing.N=100000pd.util.testing.K=5df=pd.util.testing.makeDataFrame()在这个例子中,只需要一个数据框,其中值可以完全忽略。现在,将数据框保存到CSV文件并检查其大小。importosdf.to_csv('sample.csv')os.path.getsize('sample.csv')然后,您可以尝试将相同的数据帧输出到压缩文件中并检查文件的大小。df.to_csv('sample.csv.gz',compression='gzip')os.path.getsize('sample.csv.gz'),可以看到压缩后的文件不到普通CSV文件的一半。这可能不是一个很好的例子,因为在那个随机数据帧中没有任何重复值。实际上,如果有分类值,压缩率可以很高!顺便说一下,正如你所想象的,Pandas可以直接将压缩文件读入数据框,而无需在文件系统中解压。df=pd.read_csv('sample.csv.gz',compression='gzip',index_col=0)gzip是首选,因为它在大多数Linux系统上默认存在。Pandas还支持其他压缩格式,例如“zip”和“bz2”。多列获取DateTime(timedate)来源:unsplash在Pandas中,你一定用过pd.to_datetime()方法将字符串转为DateTime格式,通常用于处理%Y%m%d等格式的字符串.但是,有时可以将下面显示的数据框用作原始数据。df=pd.DataFrame({'year':np.arange(2000,2012),'month':np.arange(1,13),'day':np.arange(1,13),'value':np.random.randn(12)})在数据框中,将年、月和日分隔为单独的列并不少见。您可以使用pd.to_dateframe()一步将其转换为DateTime列。df['date']=pd.to_datetime(df[['year','month','day']])本文分享了一些关于PandasPython库的省时技巧。总之,人生苦短,Python值得。
