干货 | pandas常用技巧笔记

下面以代码+注释的形式进行记录

# 为模块添加别名
import pandas as pd

# 创建DataFrame
df = pd.read_csv('RFM_TRAD_FLOW.csv',encoding = 'gbk')
df = pd.DataFrame(columns = ['transID', 'cumid', 'time', 'amount', 'type_label', 'type'])
df.head(5)

# loc是实际序列,比如第一行,第一列
# iloc是按照定义好的行列名
# ix是loc+iloc

# 对DataFrame进行数据操作
# 添加一列
df['col1_new'] = df['type']
# 添加一行
df.loc['row_new'] = df.loc[2,:]
# 给某一列/行数据+1
df['transID'] = df['transID'].map(lambda x: x+1)  

# 判断数据并添加数据到新DataFrame里
for i in range(df.iloc[:,0].size):
    if df.loc[i,'type'] == 'returned_goods':
        # 注意这里必须是loc,否则会报错,原因的话可分别列数据查证
        df1.loc[i] = df.loc[i]

# 重置序列,改为0,1,2...
df = df.reset_index(drop=True, inplace=True)

# 某列值的频次,频率
# 检查频数
df['type'].value_counts()
# 检查频率
df['type'].value_counts(normalize = True)

1.pandas 读写excel,csv,json等见另一篇博文:传送门

2.shift + Tab 可查看函数具体使用方法


3.在jupyter notebook里可以不同窗格写脚本,方便调试和查看

4.pandas的多表联合拼接merge

import pandas as pd

# 读取第一个文件转成DataFrame
df1    = pd.read_excel('test1.xlsx')
# 读取第二个文件转成DataFrame
df2    = pd.read_excel('test2.xlsx')

'''
df2:是你要merge的对象
how:是连接方式,分为[inner,outer,left,right]与sql类似
on:是两者需要连接的列,如果是多列,加列表来写入
left_on,right_on:是指定左/右边的DataFrame以哪个列名或者索引名进行连接,如果前面on写过,这里就写None,否则报错
left_index,right_index:用左/右边的DataFrame某一列当做连接键Key
sort:排序列
suffixes:如果两者有重复列名,重复项怎么命名,比如第一个有列名是ID,第二个也有列名是ID,那么第二个重复的列名将命名为ID_x
copy:默认复制
'''
df_res = df1.merge(df2, how='left', on=['用户id','用户名'], left_on=None,
         right_on=None, left_index=False, right_index=False, 
         sort=False, suffixes=('_x', '_y'), copy=True)
# 排序
df_res.sort_values(by=['在看电影数','想看电影数'])
#df_res.to_excel('res.xlsx',index=None)


 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神芷迦蓝寺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值