学习python中的pandas有没有好的教程推荐?

论坛 期权论坛 期权     
tober   2018-9-24 01:04   31427   10
分享到 :
0 人收藏

10 个回复

倒序浏览
2#
黄哥  6级职业 | 2018-9-24 01:04:25 发帖IP地址来自
3#
张翼轸  3级会员 | 2018-9-24 01:04:26 发帖IP地址来自
以中文书而言,这本算是不错的,作者就是pandas的最初开发者。这本书我买的是Kindle版本,不知道为何近期kindle版本下线了。
其实,如果你习惯看英文文档,不妨从官方的10 Minutes to pandas(10 Minutes to pandas)开始看,最基本的操作速成都有了,而且网上还有中文翻译版,叫十分钟搞定pandas。

当然,这个是速成,要了解细节功能,还是看文档吧,pandas: powerful Python data analysis toolkit ,个人感觉文档的清晰度其实比上面那本书来得还要好。

当然,如果你还需要看如果提取美股数据,就要增加看pandas-datareader(pandas-datareader - pandas-datareader 0.1 documentation)的基本用法介绍。如果要折腾A股数据,那么看下Tushare的使用介绍(TuShare -财经数据接口包)即可。
4#
景略集智  4级常客 | 2018-9-24 01:04:27 发帖IP地址来自

快速入门 Pandas 建议先看看集智主站的《10分钟Pandas之旅》系列:


[Pandas] 10分钟Pandas之旅 01 - 集智专栏[Pandas] 10分钟Pandas之旅 02 - 集智专栏


以及用 Pandas 进行表格整合的教程:


[Pandas] 表格整合三大神技之CONCATENATE - 集智专栏

我们都知道 Pandas 是专门用于 Python 数据分析的工具,不仅能非常快地读取与处理数据,而且还能轻松处理浮点数据中的缺失数据(表示为 NaN)以及非浮点数据。数据科学家 George Seif 近日分享了使用 Pandas 进行数据分析时的 23 段重要代码,掌握了它们对你熟悉 Pandas 一定大有帮助,集智现将它们分享过来。


这 23 种操作分为 3 个部分:获取基本的数据集信息基本的数据处理DataFrame 操作


获取的基本的数据集信息

读取CSV格式的数据集

pd.DataFrame.from_csv(“csv_file”) 


pd.read_csv(“csv_file”)


读取Excel数据集

pd.read_excel("excel_file")


将DataFrame直接写入CSV文件

采用逗号为分隔符,无索引。

df.to_csv("data.csv", sep=",", index=False)


基本的数据集特征信息

df.info()


基本的数据集统计信息

print(df.describe())


在表格中打印出DataFrame

print(tabulate(print_table, headers=headers))


其中“print_table”是一个列表,其中列表元素还是新的列表,“headers”为表头字符串组成的列表。


列出所有列的名字

df.columns


基本的数据处理

删掉缺失数据

df.dropna(axis=0, how='any')


替换缺失数据

df.replace(to_replace=None, value=None)


用“value”替换其中的“to_replace”。


检查空值(NaN)

pd.isnull(object)


检查缺失值(数值数组中的 NaN ,对象数组中的 None/NaN)。


删除特征

df.drop('feature_variable_name', axis=1)


axis 选择 0 表示行,选择1表示列。


将对象类型转为浮点型

pd.to_numeric(df["feature_name"], errors='coerce')


将对象类型转为数值,我们就能进一步执行计算(以防它们为字符串)。


将 DataFrame 转换为 NumPy 数组

df.as_matrix()


获取DataFrame的前“n”行

df.head(n)


通过特征名获取数据

df.loc[feature_name]


DataFrame操作


对 DataFrame 使用函数

该函数会将 DataFrame 中“height”列的所有值乘以2:

df["height"].apply(lambda height: 2 * height)


def multiply(x):    return x * 2df["height"].apply(multiply)


重命名列


下面代码会将DataFrame 的第三列重命名为“size”:

df.rename(columns = {df.columns[2]:'size'}, inplace=True)


取某一列的唯一entry

下面代码将取“name”列的唯一entry:

df["name"].unique()


获取子DataFrame

下面从 DataFrame 中选择性地获取“name”和“size”两列:

new_df = df[["name", "size"]]


总结数据信息

# dataframe中值的和

df.sum()

# dataframe中的最低值

df.min()

# 最高值

df.max()

# 最低值的索引

df.idxmin()

# 最高值的索引

df.idxmax()

# dataframe的统计信息总结,比如中位数等

df.describe()

# 平均值

df.mean()

# 中位值

df.median()

# 列之间的关系

df.corr()

# 只获取一列的值

df["size"].median()


给数据排序

df.sort_values(ascending = False)


布尔型索引

以下代码将过滤名为“size”的列,并仅显示值等于 5 的列:

df[df["size"] == 5]


选择特定值

以下代码将选定“size”列的第一行的值:

df.loc([0], ['size'])


参考资料:
towardsdatascience.com/

weixin.qq.com/q/02aER75 (二维码自动识别)

5#
岂安科技  3级会员 | 2018-9-24 01:04:28 发帖IP地址来自

嗯,教程的话等我们数据分析师有空了仔细请教之后送上,在此之前,献上我们数据分析师写的pandas常用数据查询语法总结


在使用Pandas之前,大多数数据分析师已经掌握了Excel和SQL,并且在刚上手Pandas时会经常习惯性想到“老办法”。"如果谁能把常用的数据查询语法做个对比就好了 ",我也曾不止一次地想享受前人的成果,无奈发现网上的文章侧重不同且深浅不一,还涉及到一些Pandas新老版本的问题,于是决定自己动手。


一、举例的数据

假设我有个六列的dataframe:一列是销售员,一列是所属团队,其它四列分别是四个季度的销售额。

1新增列-基于原有列的全年销售额

首先df['Total ']确保了你在该df内新增了一个column,然后累加便可。

df['Total']  = df['Q1']+df['Q2']+df['Q3']+df['Q4']

你可能想使用诸如sum()的函数进行这步,很可惜,sum()方法只能对列进行求和,幸好它可以帮我们求出某季度的总销售额。df['Q1'].sum(),你就能得到一个Q1的总销售额,除此之外,其他的聚合函数,max,min,mean都是可行的。


2分组统计 - 团队竞赛

那么按团队进行统计呢?在mysql里是group by,Pandas里也不例外,你只需要df.groupby('Team').sum()就能看到期望的答案了。


3排序 - 谁是销售冠军

如果你关心谁的全年销售额最多,那么就要求助于sort_values方法了,在excel内是右键筛选,SQL内是一个orderby。默认是顺序排列的,所以要人为设定为False,如果你只想看第一名,只需要在该语句末尾添加.head(1) 。


4切片-只给我看我关心的行

接下来就是涉及一些条件值的问题,例如我只关心Team为A的数据,在Excel里是筛选框操作,在SQL里写个where就能搞定,在Pandas里需要做切片。

查看Pandas文档时,你可能已经见过各种切片的函数了,有loc,iloc,ix,iy,这里不会像教科书一样所有都讲一通让读者搞混。这种根据列值选取行数据的查询操作,推荐使用loc方法。

df.loc[df['Team']== 'A',['Salesman', 'Team','Year']],这里用SQL语法理解更方便,loc内部逗号前面可以理解为where,逗号后可以理解为select的字段。

如果想全选出,那么只需将逗号连带后面的东西删除作为缺省,即可达到select *的效果。


5切片 - 多条件筛选


在Pandas中多条件切片的写法会有些繁琐,df.loc[ (df['Team']== 'A' ) & (df['Total'] > 15000 ) ],添加括号与条件

这里有一个有意思的小应用,如果你想给符合某些条件的员工打上优秀的标签,你就可以结合上述新增列和切片两点,进行条件赋值操作。

df.loc[ (df['Team']== 'A' ) & (df['Total'] > 15000 ) , 'Tag']  =  'Good'


6删除列 - 和查询无关,但是很有用

当然这里只是个举例,这时候我想删除Tag列,可以del df['Tag'],又回到了之前。



二、连接

接下来要讲join了,现在有每小时销售员的职位对应表pos,分为Junior和Senior,要将他们按对应关系查到df中。

这里需要认识一下新朋友,merge方法,将两张表作为前两个输入,再定义连接方式和对应键。对应到Excel中是Vlookup,SQL中就是join。在pandas里的连接十分简单。

df =  pd.merge(df, pos, how='inner', on='Salesman')

注意,这个时候其实我们是得到了新的df,如果不想覆盖掉原有的df,你可以在等号左边对结果重新命名。

这时候有了两组标签列(对应数值列),就可以进行多重groupby了。


当然这样的结果并不能公平地反应出哪一组更好,因为每组的组员人数不同,可能有平均数的参与会显得更合理,并且我们只想依据全年综合来评价。

这里的数据是捏造的,不过也一目了然了。



三、合并操作

最后以最简单的一个合并操作收尾。

如果我又有一批数据df2,需要将两部分数据合并。只需要使用concat方法,然后传一个列表作为参数即可。不过前提是必须要保证他们具有相同类型的列,即使他们结构可能不同(df2的Team列在末尾,也不会影响concat结果,因为pandas具有自动对齐的功能)。

pd.concat([df,df2])


尾声

以上就是一些基础的Pandas数据查询操作了。作为Pandas初学者,如果能善用类比迁移的方法进行学习并进行总结是大有裨益的。如果看完本文还没有能了解到你关心的查询方法,可以留言联系,或许还可以有续集。

6#
酱油哥  3级会员 | 2018-9-24 01:04:29 发帖IP地址来自

目前数据分析、机器学习的应用如火如荼,许多同学都有意参与到这股学习的热潮中来,但是令人苦恼的是,学习资料有很多,但是常常感觉无从下手。

这是因为,这里所涉及到的数据科学是一个综合学科,想掌握他需要熟练使用一门编程语言、了解常用的数据处理工具、深谙线性代数、概率统计、时间序列分析等数学基础以及玩转常用的机器学习算法,这是一条不算轻松的道路。

学习不光要用苦工,更要使巧劲,我们需要精心设计一条有效的学习路径,沿着他一步一个台阶的高效踏上数据科学的学习之旅,每一步都承上启下、收获满满。

我想,一条科学的学习路径规划应该是这样的,或许借鉴美剧的思路来编排组织:

第一季:Python编程语言核心基础。快速掌握一门数据科学的有力工具。

第二季:Python数据分析基本工具。通过介绍NumPy、Pandas、MatPlotLib、Seaborn等工具,快速具备数据分析的专业范儿。

第三季:Python语言描述的数学基础。概率论、统计、线性代数、时间序列分析、随机过程是构建数据科学的基石,这里独树一帜,通过python语言描述这些数学,快速让数学知识为我所用,融会贯通。

第四季:机器学习典型算法专题。这一部分利用前面介绍的基础知识,对机器学习的常用核心算法进行抽丝剥茧、条分缕析、各个击破。

第五季:实战环节深度应用。在这一部分利用已有的知识进行实战化的数据分析,初步计划对基金投资策略、城市房屋租赁等热门数据展开围猎。

季与季形成逐步向上的阶梯,季内各集环环相扣。那么问题来了,到哪去寻找这条学习路径呢?

经过我们的反复实践和打磨,小专栏《Python数据科学之路》正在定期更新与大家交流中,相信你如果关注他,并和我们一起学习前进,你会有不一样的收获和体验!有兴趣可通过微信于酱油哥联系哦~~

相信酱油哥的知识演绎能力,也相信你自己的学习热情,让我们一起踏上Python数据科学之路,领略沿途风景的壮美与瑰丽吧~

7#
shihang Wen  3级会员 | 2018-9-24 01:04:30 发帖IP地址来自
如果是做数据分析这一块,不做其他的开发的话,那么pandas可以说是最重要的,它提供了最基础的数据结构---DataFrame(数据结构库)和Numpy(基本的科学计算库)。pandas这个名字就是来源于一个数据结构panel data(面板数据),学过计量经济学的肯定对此不陌生。

如果题主是一个初学者的话,之前也有答主 @张翼轸 提到过,墙裂推荐python for data analysis:
利用Python进行数据分析 (豆瓣)
这本书对于初学者是极为友好地,在书本的最后有一个python语言精要,介绍了元组,字典,函数等最基本语法规则。
如果这一本不满足的话,就可以看
pandas.pydata.org/panda
pandas的官方文档,最新版0.19.2,1949页看着挺吓人的。

答主是做金融这一部分的,关于pandas在这一部分领域的应用也不少
Python金融大数据分析 (豆瓣)
介绍了pandas在金融领域的一些应用,主要是一些数据处理方面的,比如提取雅虎财经,谷歌财经的数据,将它们做成一个DataFrame表格来处理,等等

《Learning Pandas》 Michael Heydt【摘要 书评 试读】图书
这一本书和前面那本不同的是有一章专门讲了如何导入数据到你的ipython notebook中,HTML,sql数据库等等基本都涵盖了。
电子书地址:pdf.k0nsl.org/C/Compute

《Mastering Pandas for Finance》 Michael Heydt【摘要 书评 试读】图书
主要侧重于pandas中的计算部分,像时间序列。特点是algorithm trading这一张教你怎么用zipline来做回测,用这本书的话推荐下载anaconda2.7

答主如果想要实战一下,推荐使用优矿社区,一个量化投资平台,里面的股票数据都是pandas的DataFrame数据类型。或者是Your Home for Data Science,kaggle平台,基于pandas的数据分析网站
8#
数分  1级新秀 | 2018-9-24 01:04:31 发帖IP地址来自

知乎专栏 电影数据轻松学习 Pandas,抓取了豆瓣电影的数据进行分析,以轻松愉快的方式学习 Pandas ~~

9#
Monstarxtt  3级会员 | 2018-9-24 01:04:32 发帖IP地址来自
可以直接去看pandas的官方教程Python Data Analysis Library
【原】十分钟搞定pandas - ChaoSimple - 博客园 对于pandas十分钟入门的中文翻译
python的几个科学计算库可以先了解一下基础用法就行,然后在实践中碰到新问题再去查相应部分,很多函数也不常用,那些函数太多看一遍很难记住。没有动手实践看完《用python进行数据分析》估计没太大用
10#
匿名用户   | 2018-9-24 01:04:33 发帖IP地址来自
提示: 作者被禁止或删除 内容自动屏蔽
11#
孟攀飞  4级常客 | 2018-9-24 01:04:34 发帖IP地址来自

从操作数据角度的宏观视角看 Numpy手记Pandas手记,很直观。各种教程,包含官方的入门教程,都是太细碎了,没必要按教程来学。从应用的角度更容易上手。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:
帖子:
精华:
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP