python pandas 学习遇到的问题

  • Python pandas 学习错题集
  • 报错 1: print(pd.concat({'A':df1},{'B':df2},axis=1)) #???

TypeError: concat() got multiple values for argument 'axis'

def df_ct():
    df1=make_df(list('abcdf'),[1,2,3,4,5])
    df2 = make_df(list('eh'), [13, 22])
    print(line_sig)
    print(pd.concat([df1,df2]))
    print(line_sig)
    print(pd.concat({'A':df1},{'B':df2},axis=1)) #???

原因:pd.concat({'A':df1},{'B':df2},axis=1),这里面确实是多个axis了,有2个花括号。

改成:pd.concat({'A':df1,'B':df2},axis=1) 就ok 了。

 

  • 报错 2: AttributeError: 'Series' object has no attribute 'sort_vlaues'
group_director =mv_data.groupby(by='director_name')['gross'].sum()
print(type(group_director))
print('导演的票房总值 \n{}'.format(group_director.sort_vlaues()))

sort_vlaues这个名称打错了,应该是sort_values()

 

  • 报错3: 'DataFrame' object has no attribute 'get_chunk'
 ub_data=pd.read_csv('D:\\Python\\数据分析课件\\数据源\\UserBehavior.csv')
    ub_data=ub_data.get_chunk(10000)

原因:读取csv的时候 参数少了。 对,就是第一行的iterator=True。使用chunk来分批次读取size行,前提是读取对象dates要可用iterator。

  改成:

pd.read_csv('D:\\Python\\数据分析课件\\数据源\\UserBehavior.csv',header=None,iterator=True)

 

  • 报错4:   No module named 'dateutil'

    "Unable to import required dependencies:\n" + "\n".join(missing_dependencies)
ImportError: Unable to import required dependencies:
dateutil: No module named 'dateutil'

import pandas as pd

原因:pandas库是人工从别的环境拷贝的,没有把库:datautil 也拷贝进去

 

  • 报错5:AttributeError: 'function' object has no attribute 'tolist'

File "D:/Python/practices/TaobaoBehavior/display_time.py", line 95, in day_report
    y=day_data.count.tolist()
AttributeError: 'function' object has no attribute 'tolist'

def day_report():
    data=time_data()
    # 根据hour分组,以用户id为主计算每个用户活跃次数
    day_active=data.groupby('hour')['user_id'].count()
    # user_id 表名?
    day_data=day_active.reset_index().rename(columns={'user_id':'count'})
    print(line_sig)
    print(day_data)
#     打印柱状图
    x=day_data.hour.tolist()
    y=day_data.count.tolist()

 错误分析: day_data=day_active.reset_index().rename(columns={'user_id':'count'}), 这句设置的列名 :'user_id':'count', 这个count与保留字冲突。

修改大字首字母然后y的值count也用大写,以下是需要修改的2个地方 :

day_data=day_active.reset_index().rename(columns={'user_id':'Count'})

....

y=day_data.Count.tolist()

然后运行就正常了。

 

  • 报错6 : 用pandas.to_datetime()与用time.strftime()去转换时间戳转出来的时间结果不一样?
print(pd.to_datetime(1511644942, unit='s'))  # Timestamp('2017-11-24 17:21:10')
time.strftime('%Y-%m-%d %H', time.localtime(1511644942)) # 2017-11-25 21:22:22

增加转换为上海时间,相差11分钟输出:

time_stamp=1511644942 
print(pd.to_datetime(time_stamp,  utc=True,unit='s').tz_convert("Asia/Shanghai"))  # Timestamp('2017-11-24 17:21:10')
    print('转换为本地时间: ')
    print(time.strftime('%Y-%m-%d %H:%m:%S', time.localtime(time_stamp)))  # 2017-11-25 01:11

 加上tz_convert,设置转换的时区,输出:

2017-11-26 05:22:22+08:00
转换为本地时间: 
2017-11-26 05:11:22

???为什么呢?这个输出的时间不一样》》》》

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值