《利用Python进行数据分析》学习笔记(一)

摘要:

由于《利用Python进行数据分析》是基于Python2.7版本编写的,而随着Python3.x的普以及pandas的版本迭代(目前的版本号为:0.23.4)。,这本六年前出版(第一版出版于2012年)的书却迟迟没有更新,在使用的时候难免会遇到一些障碍,所以我将在学习这本书的过程中遇到的问题和解决办法以及学习学习笔记都分享给大家。给之后阅读这本书的读者更够一个参考,少走一些弯路。我在重写本书代码时遇到的各种问题都会分章节的给大家解决。作者第一次写技术类博客,而且时间和精力有限,文中错误比较多,若读者们发现错谬之处,请不吝告知,以免误导他人。


第二章:引言

Movielens 1M

  1. top_female_ratings=mean_ratings.sort_index(by='F',ascending=False)
    FutureWarning: by argument to sort_index is deprecated, please use .sort_values(by=…)
    解决办法:用.sort_values(by=…)替换.sort_index(by=…)。

  2. mean_ratings=data.pivot_table('rating',rows='title',cols='gender',aggfunc='mean)
    可能pandas版本的原因,现在版本的.pivot_table()没有rows,cols参数。
    解决方法:
    将代码改为mean_ratings=data.pivot_table('rating',index='title',columns='gender',aggfunc='mean')
    参考文献:
    pandas官网文档链接
    《利用Python进行数据分析》第二章pivot_table报错问题

  3. rating_std_by_title.order(asending=False)[:10]#以上相同问题的补充
    Series没有order()函数
    解决方法:
    rating_std_by_title=rating_std_by_title.sort_values(ascending=False)[:10]
    使用.sort_values()对Series按值进行排序。
    方法扩展:

    print ('series通过索引进行排序:')
    series.sort_index()
    print ('series通过值进行排序:')
    series.sort_values()
    print ('dataframe根据行索引进行降序排序(排序时默认升序,调节ascending参数):')
    frame.sort_index(ascending=False)
    print ('dataframe根据列索引进行排序:')
    frame.sort_index(axis=1)
    print ('dataframe根据值进行排序:')
    frame.sort_values(by='a')
    print ('通过多个索引进行排序:')
    frame.sort_values(by=['a','c'])

参考文献:
《pandas学习:对series和dataframe进行排序》

1880-2010年间全美婴儿姓名

  1. names=pd.concat(pieces,ignore_index=True)
    笔记:
    concatenation
    n. 串联,连结
    这里需要注意几件事情:
    第一, concat默认是按行将多个 Dataframe组合到一起的;
    第二,必须指定 ignore_ index=True,因为我们不希望保留 read csv所返回的原始行号。
  2. total_births=names.pivot_table('births',rows='year',cols='sex',aggfunc=sum)
    TypeError: pivot_table() got an unexpected keyword argument ‘rows’
    解决方法:
    total_births=names.pivot_table('births',index='year',columns='sex',aggfunc=sum)
    参考文献:
    《利用Python进行数据分析》第二章pivot_table报错问题
  3. group.sort_index(by='births',ascending=False)[:1000]#以上相同问题的补充
    FutureWarning: by argument to sort_index is deprecated, please use .sort_values(by=…)
    我之后查阅了pandas的官方文档才知道:在新版的pandas中,对Series或者·Dataframe进行排序有两种方法。分别是
    .sort_index().sort_values()。其功能分别是按索引对Series或者Dataframe进行排序和按值进行排序。

  4. total_births=top1000.pibot_table('births',rows='year',cols='name',aggfunc=sum)
    TypeError: pivot_table() got an unexpected keyword argument ‘rows’
    解决方法:同上。
    total_births=top1000.pivot_table('births',index='year',columns='name',aggfunc=sum)

  5. diversity.plot(title='Number of popular names in top 50%')
    TypeError: Empty ‘DataFrame’: no numeric data to plot
    错误原因:
def get_quantile_count(group,q=0.5):
    group.sort_values(by='prop',ascending=False)
    return (group.prop.cumsum().searchsorted(q)+1)

(group.prop.cumsum().searchsorted(q)+1)
返回的是numpy数组(class <’numpy.ndarray’>),而不是浮点,因此不能进行绘图。
解决方法:应将numpy数组中的数据取出单独写入Dataframe。

def get_quantile_count(group,q=0.5):
    group.sort_values(by='prop',ascending=False)
    return (group.prop.cumsum().searchsorted(q)+1)[0]

参考文献:
Python数据分析示例(3)Day4

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little_Yuu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值