本篇为『对比Excel,轻松学习Python数据分析』书籍勘误表,欢迎大家指正。
位置 | 误 | 正 |
---|---|---|
P27 | 变量名必须以字母或下画线 | 变量名必须以字母或下划线 |
P28 | .2%表示以百分比的形式展示,且展示小数点后两位 | .2%表示以百分比的形式展示,且显示小数点后两位 |
P30 | "张俊红" | '张俊红' |
P30 | "Python真强大"*3 | 'Python真强大Python真强大Python真强大' |
P36 | "a","d",["b","c"] | 'a','d',['b','c'] |
P36 | >str_list... | >>>str_list... |
P37 | 然后用dict进行转化。 | 然后用dict()进行转化。 |
P38 | 元组(tup)虽然与列表相似 | 元组(tuple)虽然与列表相似 |
P38 | ("a","b","c") | ('a','b','c') |
P40 | <> | <>在python3.x中已经取消 |
P50 | 从一个较大的模块中import较小的一个模块 | 从一个较大的模块中import一个较小的模块 |
P67 | 除了sql和con这两个关键参数,read_table()函数 | 除了sql和con这两个关键参数,read_sql()函数 |
P76 | 只要给dropna()方法传入一个参数how=all即可 | 只要给dropna()方法传入一个参数how="all"即可 |
P81 | df.drop_duplicates(subset=["姓名","唯一识别码"]) | df.drop_duplicates(subset=["客户姓名","唯一识别码"]) |
P82 | 下图为正太分布图 | 下图为正态分布图 |
P84 | dtype("int64") | dtype('int64') |
P85 | df["唯一识别码"].dtype() | df["唯一识别码"].dtype |
P87 | df.index=[1,2,3,4,5,6] | df.index=[1,2,3,4,5] |
P89 | df.rename(columns={"订单编号":"新订单编号","客户姓名":"新客户姓名"}index={1:"一",2:"二",3:"三"}) | df.rename(columns={"订单编号":"新订单编号","客户姓名":"新客户姓名"},index={1:"一",2:"二",3:"三"}) |
P92 | df["订单编号"]获取的结果 | df["订单编号"]获取到的结果中没有列名 |
P95 | df.iloc[0:2] | df.iloc[0:3] |
P98 | 0、1、2、3、4索引一、二、三、四、五 | |
P98 | df.iloc[0:2,1:2] | df.iloc[0:3,1:3] |
P99 | df.ix[0:2,["客户姓名","唯一识别码"]] | df.ix[0:3,["客户姓名","唯一识别码"]] 注意:使用ix也可以得出结果,但是会报警告,因为ix方法被弃用,换成loc即可消除报警 |
P101 | df["年龄"].replace(240,33) | df.replace(240,33)或者 df["年龄"].replace(240,33,inplace = True) 再打印df |
P116 | df.isin([A2,31]) | df.isin(["A2",31]) |
P118 | pd.cut(df["年龄"],3,bins=[0,3,6,10]) | pd.cut(df["年龄"],bins=[0,3,6,10]) |
P124 | Nmae | Name |
P124、P125、P126 | Conpany、conpany | Company |
P125 | df.melt出来的结果顺序有问题 | df.melt出来的结果应该是按照year排序的,即相同的年份在一起 |
P126 | 长表转化为宽表 | 结果中不包含亚马逊和腾讯 |
P129 | df["C1"] != df["C2"] | df["C1"] < df["C2"] |
P135 | df["C1"].var() | df["C1"].std() |
P139 | datatime.now.weeekeday()+1 | datetime.now().weekday()+1 |
P139 | datatime.now.isocalendar() | datetime.now().isocalendar() |
P139 | datatime.now.isocalendar()[1] | datetime.now().isocalendar()[1] |
P140 | datatime.now.date() | datetime.now().date() |
P140 | datatime.now.time() | datetime.now().time() |
P142 | parse(str_now) | parse(str_time) |
P142 | type(parse(str_now)) | type(parse(str_time)) |
P146 | #往后推60分钟 | #往前推60分钟 |
P146 | data | date |
P146 | 2018/5/19 23:32 | 2018/5/18 23:32 |
P146 | 2018/5/19 21:32 | 2018/5/18 21:32 |
P146 | 2018/5/19 17:32 | 2018/5/18 17:32 |
P146 | 2018/5/19 19:32 | 2018/5/18 19:32 |
P147 | from pd.tseries.offsets import Day,Hour,Minute | from pandas.tseries.offsets import Day,Hour,Minute |
P147 | #往后推10分钟,date+Minute(1) | #往后推10分钟,date+Minute(10) |
P147 | #往前推1小时,date+Hour(1) | #往前推1小时,date-Hour(1) |
P147 | #往前推10分钟,date+Minute(1) | #往前推10分钟,date-Minute(10) |
P153 | df.group("客户分类") | df.groupby("客户分类") |
P153 | df.group("客户分类").sum().reset_index() | df.groupby("客户分类").sum().reset_index() |
P156 | pd.pivot_table(df,values=["用户ID","7月销量"],, | pd.pivot_table(df,values=["用户ID","7月销量"], |
P172 | float("-inf) | float("-inf") |
P184 | 然后在[1,1]坐标系中绘制折线图 | 然后在[1,1]坐标系中绘制柱状图 |
P189 | y=array([]) | y=np.array([]) |
P195、P196 | plt.title(s= | plt.title(label= |
P197 | plt.text(5,1605,"极值点") | 折线图的文字是"极值点"点不是1605 |
P207 | #x+0.3相当于把完成量的每个柱子右移0.3 | 删除 |
P207 | plt.bar(x+0.3,y2 | plt.bar(x,y2 |
P208 | .xlabel("任务量") | plt.xlabel("任务量") |
P212 | y1=array | y1=np.array |
P212 | y2=array | y2=np.array |
P214 | size = np.array([0.34,0.693... | size = np.array([3.4,0.693 |
P216 | plt.title(s='综合评级') | plt.title(label='综合评级') |
P217 | y1=array([]) | y1=np.array([]) |
P217 | y2=array([]) | y2=np.array([]) |
P222 | x = np.array | cm = np.array |
P222 | for i,j in itertools.product | 需要引入import itertools |
P237 | s_t_1=sales/traffic | s_t_1=sales_1/traffic_1 |
P237 | s_t_2=sales/traffic | s_t_2=sales_2/traffic_2 |
P237 | s_t_3=sales/traffic | s_t_3=sales_3/traffic_3 |
P237 | format(sale_1,traffic_1,s_t_1) | format(sales_1,traffic_1,s_t_1) |
P237 | format(sale_2,traffic_1,s_t_1) | format(sales_2,traffic_1,s_t_1) |
P237 | format(sale_3,traffic_1,s_t_1) | format(sales_3,traffic_1,s_t_1) |
P238 | sale = (data["Price"]*data["Qty"]).sum() | sale = (data["单价"]*data["销量"]).sum() |
P238 | traffic = data["SheetID"].drop_duplicates().count() | traffic = data["订单ID"].drop_duplicates().count() |
P238 | [traffic_1.traffic_2,traffic_3] | [traffic_1,traffic_2,traffic_3] |
P240 | 邮件自动发送部分最开始添加from email.mime.multipart import MIMEMultipart | |
P242 | pd.pivot_table(data_2017 | pd.pivot_table(data |
P244 | #求每个小时的客流量tracffic.groupby("小时")["订单ID"].count().plot() | 去掉.plot |
P247 | age_cut = pd.cut(data["年龄"],6) | age_cut = pd.qcut(data["年龄"],6) |
P249 | bad_rate.plot.bar() | bad_rate.plot() |
P252 | npp.ones((2,3)) | np.ones((2,3)) |
P254 | np.random.randint(5,10) | np.random.randint(5,size=10) |
P254 | np.random.randint(5,3) | np.random.choice(5,3) |
P254 | np.random.randint(5,(2,3)) | np.random.choice(5,(2,3)) |
P255 | np.random.shuffle(arr) | 在这行后面增加arr输出 |
P260 | arr[np.isnan(arr)]=0 | 在这行后面增加arr输出 |
P261 | #将数组重塑为2行6列的 | 在这行后面增加arr.reshape(2,6) |
P265 | argmin、argmax:分别为最大值和最小值对应的索引 | argmin、argmax:分别为最小值和最大值对应的索引 |