用python 自动计算亚马逊vat税款

简述下如何使用pandas计算亚马逊英国vat税款,纯粹是pandas的业务代码。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475#%%import pandas as pd#%%vat_csv = r"C:UsersAdministratorDownloads18168935102018178.csv"df = pd.read_csv(vat_csv)#%%def filter_free_tax_zone_post_code(x : str): if type(x) is not str: return False return x.startswith('JE') or x.startswith('GY')# # BN列邮编首字母为JE和GY的,是英国的附属岛屿,目前有免税优惠,不用计算df = df[~df['ARRIVAL_POST_CODE'].apply(filter_free_tax_zone_post_code)].copy()#%%# BO SALE_DEPART_COUNTRY 发货国家 BP…

0 Comments

如何理解Pandas 和 Numpy里的axis

简述一种如何直观的理解Pandas 和 Numpy里面的axis参数的方法。Numpy 和 Pandas里的sort、mean、drop等操作,不是分行或者列分别用一个method来定义,而是一个method里面用户指定axis来操作的,举例来说:我们先在此处下载了一份各国酒类消费的csv文件为例。如下是pandas里按axis 0和1进行drop的操作示例,我们很容易看出,axis 0是按行drop,而axis 1是按列drop:但是,mean操作呢?容易看出,axis 0得出了每一列的均值,而axis 1得出了则是每一行的均值。那么,在Numpy里呢?容易看出,axis为1的时候得出的是每行的sum,axis为0的时候得出了每列的sum。由上面的例子,我们似乎可以看出,axis为1代表水平方向上的操作,axis为0代表垂直方向上的操作,比如axis为1的sum得出的就是每一行的和。但是,在Pandas的Dataframe里面,为什么axis=1代表的是drop整个列呢?以下这个例子也可以说明一些情况:联系这个视频How do I use the “axis” parameter in pandas? - YouTube,大家也可以得到一些结论,作者说:0 is the row axis, and 1 is the column axis.…

0 Comments

解决Excel长数字被转为科学计数法的问题

记录一些利用Pandas处理Excel和时间戳的例子。读取和保存Excel1234# sheetname指定读取子表dfs = pd.read_excel('/Users/frank/Desktop/hebing.xlsx', sheetname=0)c.to_excel('/Users/frank/Desktop/result.xlsx',index=False)DataFrame合并及排序12dfs_group = dfs.groupby(by='订单号').sum()dfs_group.sort_values(ascending=False, by='子订单金额')时间段切片这个我暂时没发现如何用一行表达式完成,暂时用的这种low方式 12a = dfs.loc[dfs["付款时间"] < '2017-05-10 09:00:00']b = a.loc[a["付款时间"] > '2017-05-08 10:00:00']解决长数字被转为科学计数法的问题比如好好的订单号,保存为xlsx或者csv就变成了这样,这是什么玩意儿,完全不能忍啊! 如何解决呢?如下1c['订单号'] = c['订单号'].apply(lambda x: '{:.0f}'.format(x))即将其长数字转为不带小数点的浮点数形式即可  

0 Comments

利用Pandas读取远程mysql数据库

利用pymysql与Pandas读取远程数据库上的表格,并存储为本地csv文件。因为业务需要读取服务器上的数据进行分析,能连接到sql服务器,但是当我企图用mysqldump备份(复制)database到本地却经常出现mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table错误,这个需要改net_write_timeout来增加等待时长来解决,苦于我的账号并没有权限,难不成只好之间上sql用odbs大法直接做数据分析?我的天,那得多麻烦,经过几番思考,我的解决方案是:用sql的python接口包pymysql进行sql登录以及操作,再用Pandas以DataFrame格式接受table数据,最后存为csv文件。登录模块注意,若数据库含有中文,需要use_unicode=True避免乱码123456789101112131415161718192021222324# -*_coding:utf8-*-# Created by frank at 07/04/2017import pymysqlhost = '#########'port = ####user = '########'password = '#######'def get_database(): """…

0 Comments