pandas备忘录(从表格到python)

基础属性

import pandas as pd
import numpy as np
data = pd.DataFrame()#创建空的表
pd.set_option('mode.chained_assignment', None)#关闭警告
data=[
{"A":1,"B":8},
{"A":2,"B":9},
{"A":3,"B":10},
{"A":4,"B":11},
{"A":5,"B":12},
{"A":6,"B":13},
{"A":7,"B":14}
]
df=pd.DataFrame(data)#指定内容建表
data=pd.read_excel('店铺销售单查询.xlsx',header=3)#读取表格并指定列标题(从0开始)
data.columns=['入账时间','货号','出仓价','吊牌价','数量','出仓金额','吊牌金额']#更改列名
data.index=data['货号']#将行标签变为"货号"列
datax=data.values.tolist()#将表中的值转化为列表
data = data.reset_index(drop=True)  # drop=True表示删除原索引,不然会在数据表格中新生成一列'index'数据
data.dtypes#输出所有列数据类型
data["售罄率%"]=data["售罄率%"].astype(int)#转换为整形
data["售罄率%"]=data["售罄率%"].astype(str)#转换为字符串
df.shape[0] 行数
df.shape[1] 列数
c.rename(columns={"销售量(含拒退)":"当日销量"})  #更改列名

关于数据提取

data['skc']=data['条码'].str[0:11]#截取前11位字符
data.loc['0SD3415501',["入账时间",'出仓价']]#选取指定行列的值
data.loc['0SD3415501',:]#选取指定行
data.loc[:,"入账时间"]#选取指定列
data.loc[data['颜色名称']=='黑色',["入账时间",'出仓价']] #筛选,输出指定列
data.loc[data['出仓金额']>300,:]#比较筛选,输出所有列(指定列当然也可以)
data.iloc[0:3,0:4]#根据索引号切片,前3行的前4列
#下面是一些简单写法
data['颜色名称']#选取单列
data[['出仓金额','颜色名称']]#选取多列,注意有两个[]
data[data["出仓金额"]==320]#筛选
data['出仓金额']['0SD3415501']#根据索引提取单个值,注意先列后行

关于删除

data=data.drop(['成本价','出仓价'],axis=1)#删除成本价和出仓价两列
data=data.drop(['0SE1600901','0SD3415501'])#删除行标签为'0SE1600901','0SD3415501'的两行
data=data.drop(range(0,4))#删除前四行
data=data.drop(data[data["入账时间"]=="总计"].index)#删除列为"入账时间"中值等于"总计"的行
data=data.drop_duplicates(subset="款号")#去除重复值(以列"款号"为依据)

关于缺失值

#删除含有缺失值的所有行
data=data.dropna()
#选择某列中,没有缺失值的所有行
data=data.loc[data['数量'].notnull(),:]
#用0替换缺失值,其中0可以是任意字符
data=data.fillna(0)
#将0替换为缺失值
data=data.replace(0,np.nan)
data=data.replace([None],np.nan)
data.replace([None],np.nan,inplace=True)
#正负无穷的处理
data=data.replace(np.inf, 0)
data=data.replace(-np.inf, 0)
data=data.replace(0,np.nan)

关于数据深加工

form numpy import sum as npsum
#透视表,参数说明:data=数据表,index=行依据,columns=列依据,aggfunc=计算方式
datax=pd.pivot_table(data=data[['货号','数量','吊牌金额','店铺编号']],index='货号',columns='店铺编号',aggfunc=npsum)
data=data.reset_index()#透视会产生多重索引,重置即可恢复
#排序,参数说明:by=排序依据,ascending=[True,False]升/降
data=data.sort_values(by=["售罄率","库存"],ascending=[True,False]
#筛选,isin
data=data.loc[data['店铺名称'].isin(['T001','T002','T003','T005'])]
#匹配vlookup,参数说明:主表,分表,how='左对齐',on='匹配依据'
data = pd.merge(data1,data2.loc[:,['出仓金额','吊牌金额']],how='left',on = '货号')
#根据行索引拼接,参数说明:[要拼接的表或列],axis=1 根据行索引拼接,默认为根据列索引
sheety=pd.concat([sheet,sheetx["货号"],sheetx["货号"],sheetx["大类"]],axis=1)
#添加行合计
data['行合计']=data.apply(lambda x: x.sum(),axis=1)#在最后添加一列行合计
data.loc['列合计']=data.apply(lambda x: x.sum())#在最后添加一行列合计
基础常态['款号']=基础常态['货号'].str[0:-2]#截取开始到倒数第三位
基础资料['最小成本']=基础资料[['货号成本','款号成本']].min(axis=1)#求行维度的最小值
data['评价内容']=data['评价内容'].str.replace(r"…",'')#字符串部分替换
data['评价内容']=data['评价内容'].replace(r"差",'')#字符串整体替换
data=data.loc[~data['工厂'].str.contains("广州皮奥|上海海迪|广州卓群|广州佳源|广州森泰")]#剔除特定含义特定字符的行
sx3=sx3.loc[sx3['商品类目'].isin(['女单鞋','女休闲鞋','女靴','女凉鞋','女拖鞋']),:]#条件筛选

关于时间处理

import datetime#pd的时间类型支持此模块的运算
#转化为时间类型
data['入账时间']=pd.to_datetime(data.入账时间)
#只保留年月日
data['首批到货时间']=data['首批到货时间'].dt.date
#求时间间隔
data['预计出货货期']=(data['预计出货时间']-data['下单日期']).dt.days
#提取年月日时分秒
data.loc[0,'入账时间'].year
data.loc[0,'入账时间'].month
data.loc[0,'入账时间'].day
data.loc[0,'入账时间'].hour
data.loc[0,'入账时间'].minute
data.loc[0,'入账时间'].second
#时间处理函数datetime.timedelta()
#天数减一
data.loc[0,'入账时间']+datetime.timedelta(days=-1)
#把时分秒调成0
n=data.loc[0,'入账时间']
n=n+datetime.timedelta(hours=-n.hour,minutes=-n.minute,seconds=-n.second)
#计算统计日期:9点之前的单子算前一天的
def f(a1):
    n=a1['入账时间']
    if n.hour<9:
        v1=n+datetime.timedelta(days=-1,hours=-n.hour,minutes=-n.minute,seconds=-n.second)
    else:
        v1=n+datetime.timedelta(hours=-n.hour,minutes=-n.minute,seconds=-n.second)
    return v1
data['统计时间']=data.apply(f,axis=1)

各种小技巧

#1.更改某一列的名称
col=data.columns.tolist()
n=col.index('款号')
col[n]='货号'
data.columns=col
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值