当前位置: 首页 > 科技观察

不要再看了,这是关于Pandas最详细的教程_0

时间:2023-03-15 23:42:13 科技观察

Python是开源的,这很棒,但是开源存在一些固有的问题:许多包做(或尝试做)同样的事情。如果您是Python新手,很难知道哪个包最适合特定任务,您需要有经验的人来告诉您。数据科学绝对需要一个包,它就是pandas。pandas最有意思的地方在于它里面隐藏着很多包。它是一个核心包,包含许多其他包的功能。这很棒,因为你只需要pandas就可以完成工作。pandas是excel的python等价物:它使用表(又名数据帧),可以对数据进行各种转换,但还可以做更多。如果已经熟悉python的使用,可以直接跳到第三段。让我们开始吧:importpandasaspd不要问为什么用“pd”而不是“p”,就是这样。随便用吧:)pandas最基本的功能就是读取数据data=pd.read_csv(my_file.csv)data=pd.read_csv(my_file.csv,sep=;,encoding=latin-1,nrows=1000,skiprows=[2,5])sep表示分隔符。如果你使用的是法语数据,excel中的csv分隔符是“;”,所以需要明确指定。编码设置为latin-1以读取法语字符。nrows=1000表示读取前1000行数据。skiprows=[2,5]表示您将在读取文件时删除第2行和第5行。最常用的函数:read_csv、read_excel其他一些很棒的函数:read_clipboard、read_sql写入数据data.to_csv(my_new_file.csv,index=None)index=None表示数据会原样写入。如果不写index=None,就会多出一个第一列,内容是1,2,3,...,一直到最后一行。我通常不使用其他函数,如.to_excel、.to_json、.to_pickle等,因为.to_csv可以很好地完成这项工作,而csv是最常用的保存表格的方式。检查数据Gives(#rows,#columns)给出行数和列数data.describe()计算基本统计数据查看数据data.head(3)打印出数据的前3行。同样,.tail()对应最后一行数据。data.loc[8]打印第八行data.loc[8,column_1]打印第八行名为“column_1”的列data.loc[range(4,6)]第四到第六行(左闭)基本功能逻辑数据子集pandasdata[data[column_1]==french]data[(data[column_1]==french)&(data[year_born]==1990)]data[(data[column_1]==french)&(data[year_born]==1990)&~(data[city]==London)]通过逻辑运算得到数据的一个子集。要使用&(AND),~(NOT),and|(OR),你逻辑运算前后必须使用“与”data[data[column_1].isin([french,english])]除了对同一列使用多个OR,还可以使用.isin()函数。基本绘图matplotlib包使这成为可能,正如我们在介绍中所说,它可以直接在pandas中使用data[column_numerical].plot()().plot()输出data[column_numerical].hist()的例子绘制数据分布(直方图),绘制前添加以上代码,更新数据data.loc[8,column_1]=english替换第八行名为column_1的列with"english"data.loc[data[column_1]==french,column_1]=French在一行代码中更改多列好了,现在你可以做一些在excel中很容易访问的事情了。让我们深入研究一些在excel中无法实现的惊人操作。中层函数统计出现次数data[column_1].value_counts().value_counts()函数输出示例对所有行、列或整个数据进行操作data[column_1].map(len)len()函数被应用对“column_1”列中每个元素的.map()操作将函数应用于列data[column_1].map(len).map(lambdax:x/100).plot()之一的pandasA中的每个元素不错的功能是方法链接(https://tomaugspurger.github.io/method-chaining)。它可以帮助您更轻松、更高效地在一行中执行多项操作(.map()和.plot())。data.apply(sum).apply()会将函数应用于列。.applymap()将函数应用于表(DataFrame)中的所有单元格。tqdm,只有pandas在处理大规模数据集时,会花一些时间做.map()、.apply()、.applymap()等操作。tqdm是一个包,可用于帮助预测这些操作的执行何时完成(是的,我撒谎了,我之前说过我们将只使用pandas)。fromtqdmimporttqdm_notebooktqdm_notebook().pandas()用pandas设置tqdmdata[column_1].progress_map(lambdax:x.count(e))并使用.progress_map()而不是.map()、.apply()和.applymap()类似。在Jupyterdata.corr()data.corr().applymap(lambdax:int(x*100)/100).corr()中使用tqdm和pandas的进度条相关性和散点矩阵将给出相关矩阵pd.plotting.scatter_matrix(data,figsize=(12,8))散点矩阵示例。它在同一图表中绘制两列的所有组合。pandas中的高级操作SQL关联在pandas中实现关联非常非常简单data.merge(other_data,on=[column_1,column_2,column_3])三列关联只需要一行代码分组一开始没那么简单,你首先要掌握语法,然后你会发现你无时无刻不在使用这个功能。data.groupby(column_1)[column_2].apply(sum).reset_index()按一列分组,选择另一列执行函数。.reset_index()将数据重组到表中。如前所述,要优化代码,请将您的函数链接在一行中。行迭代dictionary={}fori,rowindata.iterrows():dictionary[row[column_1]]=row[column_2].iterrows()使用两个变量一起循环:行索引和行数据(i和上面的行)Allin总而言之,pandas是python成为一种伟大的编程语言的原因之一我本可以展示pandas的更多有趣特性,但所写的内容足以理解为什么数据科学家离不开pandas。总结起来,pandas有以下优点:简单易用,所有复杂抽象的计算都隐藏在背后;直觉的;快,即使不是最快的,也是非常快的。它帮助数据科学家快速阅读和理解数据,提高他们的工作效率