import pandas as pd
df = pd.Dataframe(....)
示例:
a = [['自主访问', '1,193', '981', '554', '14.49%', '趋势'],
['购物车', '1,731', '1466', '846', '28.36%', '趋势'],
['我的淘宝', '950', '777', '634', '9.46%', '趋势'],
['直接访问', '0', '253', '37', '0.00%', '趋势']]
# list转成Dataframe格式
df = pd.DataFrame(a)
""" 0 1 2 3 4 5 0 自主访问 1,193 981 554 14.49% 趋势 1 购物车 1,731 1466 846 28.36% 趋势 2 我的淘宝 950 777 634 9.46% 趋势 3 直接访问 0 253 37 0.00% 趋势 """
# 删除dataframe指定列
df = df.drop(columns=[5])
# 将某列设为索引列
df.set_index([0], inplace=True)
# 指定columns
df.columns = ['流量来源','本店交易指数', '竞店1交易指数', '竞店2交易指数', '本店支付金额']
# 新增列
df['data_time'] = ['2019/5/1', '2019/5/2'] * 5
df['kinds'] = ['客群指数'] * df.shape[0]
# 指定索引列 列名
df.index.name='流量来源'
更改数据类型
df[['本店交易指数','竞店1交易指数','竞店2交易指数']] = df[['本店交易指数','竞店1交易指数','竞店2交易指数']].astype('int')
df
# 函数作用到某列 apply
df[1] = df[1].apply(lambda x: int(x.replace(',','')))
# 函数作用到多列 applymap
df[[1,2,3]] = df[[1, 2,3]].applymap(lambda x: int(x.replace(',','')))
# 纵向合并, concat
total_df = pd.concat([df, df2],ignore_index=True )
# keys表示对纵向各分组进行命名
s_new = pd.concat([s1, s2, s3], keys=['本店交易指数','竞店1交易指数','竞店2交易指数'])
s_new
# 横向合并dataframe,how,默认内连接,此处为外连接,on为连接列,suffixes为连接属性后下标
new_merge = pd.merge(df, df_2, on=['流量来源', 'data_time'], suffixes=('_流量指数','_客群指数'), how='outer')
第一个参数表示作用列,index指代透视表行,columns指代透视表列
# 借助透视表进行数据重排,需要保证数据类型能够实现聚合函数,aggfun,默认取平均数
s = total_df.pivot_table(['本店交易指数','竞店1交易指数','竞店2交易指数'],index=['data_time','流量来源'], columns='kinds')
s2 = total_df.pivot_table(['本店交易指数','竞店1交易指数','竞店2交易指数'],index=['data_time','流量来源'], columns='kinds',aggfunc=sum)
# 读取含中文的文件名时,加上 engine='python',内容含中文时,加上 encoding='utf_8_sig'
data = pd.read_csv('data_阿道夫梦卓专卖店_徽歌旗舰店.csv',engine='python', encoding='utf_8_sig')