996之前,软件开发人员只要会使用少数几个技能或软件,你就能战胜同行业同职位的95%,如下技能:
Object-oriented
Scripting 语言
JavaScript
SQL.
当您需要快速浏览一些数据并得出初步结论时,最终可能产生编写报告或应用程序,SQL是首选工具。这称为探索性分析。
如今,数据以多种形式出现,并且不再仅仅与“关系数据库”同义。您可能最终会得到CSV文件,纯文本,Parquet,HDF5,等等吧。这同时也是 Pandas 大放异彩的地方。
1. 什么是 Pandas?
Python数据分析库(称为Pandas)是为数据分析和处理而构建的Python库。它是开源的,并由Anaconda支持。它特别适合结构化(表格)数据。欲获得更多信息: http://pandas.pydata.org/pandas-docs/stable/index.html.
2. 我们能用pandas做什么?
可以负责任的说:您之前在SQL中对数据进行的所有查询以及更多其他内容。或者更多!
3. 那么,我们如何开始学习呢?
对于那些习惯于用SQL术语表达数据问题的人来说,这可能会令人感到恐惧。因为使用SQL,您可以在几乎像英语的句子中声明想要的内容,的确太简单了。
Pandas的语法与SQL完全不同。在Pandas中,您可以对数据集应用操作并将其链接起来,以按照所需的方式变换和重塑数据。
所以呢,我们需要一个
我们将需要一本短语手册!
4. SQL查询的剖析
SQL查询由一些重要的关键字组成。在这些关键字之间,添加您想要查看的数据的详细信息。以下是没有细节的基本查询demo:
SELECT… FROM… WHERE…
GROUP BY… HAVING…
ORDER BY…
LIMIT… OFFSET…
或者还有其他术语,但是以上这些是最重要的。那么我们如何将这些术语翻译成pandas呢?
首先,我们需要将一些数据加载到Pandas中,因为它们尚未存储在数据库中。方法如下:
import pandas as pd
airports = pd.read_csv('data/airports.csv')
airport_freq = pd.read_csv('data/airport-frequencies.csv')
runways = pd.read_csv('data/runways.csv')
SELECT, WHERE, DISTINCT, LIMIT
这是一些SELECT语句。我们使用LIMIT截断结果,并使用WHERE过滤结果。我们使用DISTINCT删除重复的结果:
SELECT 多条件:
我们用&联接多个条件。如果我们只想要表中的列的子集,则该子集将应用在另一对方括号中。
ORDER BY
默认情况下,Pandas将按升序对事物进行排序。要扭转这种情况,请提供ascending = False
IN… NOT IN
我们知道如何根据值进行过滤,但是关于值列表-IN条件呢?在熊猫中,.isin()运算符的工作方式相同。要取消任何条件,请使用〜。
GROUP BY, COUNT, ORDER BY
分组很简单:使用.groupby()运算符。在SQL和Pandas中,COUNT的语义之间存在细微的差异。在Pandas中,count()将返回非null / NaN值的数量。要获得与SQL COUNT相同的结果,请使用.size()
下面,我们分组讨论多个领域。pandas默认情况下会在相同的字段列表中对事物进行排序,因此在第一个示例中不需要a.sort_values()。如果像第二个示例一样,我们想使用不同的字段来排序或使用DESC代替ASC,则必须明确:
.to_frame()和.reset_index()的技巧是什么?因为我们要按计算的字段(大小)进行排序,所以该字段需要成为DataFrame的一部分。在对Pandas进行分组之后,我们得到了另一种类型,称为GroupByObject。因此,我们需要将其转换回DataFrame。使用.reset_index(),我们为dataframe重新开始行编号。
下期将会将聚合函数与两表的联合查询,如 join ,merge,sum(),min()