pandas一些使用方法整理

1.关于读取文件报错:

   low_memory的作用: 如果说不指定dtype的话,默认的熊猫在读取的时候会提取该字段下面空间占用最小的作为内存存储单位,如果指定 low_memory=False的话,直接跳过这个判断步骤,默认已存储单位最长的作为存储单位;

2.使用熊猫进行大规模数据读取时,分块读取

cuiji1_1=pd.read_csv('cuiji1_1.csv',low_memory=False)
cuiji1_2=pd.read_csv('cuiji1_2.csv',low_memory=False)
cuiji2=pd.read_csv('cuiji2.csv',low_memory=False)
cuiji3=pd.read_csv('cuiji3.csv',low_memory=False)
cuiji4=pd.read_csv('cuiji4.csv',low_memory=False)
cuiji5=pd.read_csv('cuiji5.csv',low_memory=False)
cuiji6=pd.read_csv('cuiji6.csv',low_memory=False)
cuiji7=pd.read_csv('cuiji7.csv',low_memory=False)
cuiji8=pd.read_csv('cuiji8.csv',low_memory=False)
cuiji9=pd.read_csv('cuiji9.csv',low_memory=False)
frames=[cuiji1_1,cuiji1_2,cuiji2,cuiji3,cuiji4,cuiji5,cuiji6,cuiji7,cuiji8,cuiji9]
cuiji=pd.concat(frames)

3.使用pandas处理缺失值的方法

cuiji.dropna(axis=0, how='any', inplace=True)   其中axis参数作为=0表示删除含有空行的行;为1的话是以列为删除

4.删除重复行
cuiji.drop_duplicates(inplace=True)

5.使用pandas处理时间日期格式

cuiji['create_date'] = pd.to_datetime(cuiji['create_date'].apply(lambda x: time.strftime("%Y-%m-%d", time.localtime(x))))

6.对于某列进行函数变换使该列值转换成需要的形式

cj['freq']=cj.apply(lambda x: round((x[8].days+1)/x[7],2), axis=1)     例如,我们需要计算freq这一列的值,这一列的值需要第9列除以第8列,则需如左侧apply函数设置,其中,axis=1表示在行上进行操作

7.对于错误  A ..is trying to set a dataframe

   这个意思是,我们通过一些查询操作,获取了dataframe的一个视图,而我们想在这个视图上增加一列或者怎样,这时候就会报错,以为我们不能在视图而非dataframe来进行操作;

   解决方案的话很简单:只要对视图copy一下就可以了; 

    例如:

  cuiji_filter = cuiji[(cuiji.create_date >= tstart) & (cuiji.create_date< tend)] # 案件催记池
  cuiji_filter=cuiji_filter.copy()  

   此时我们发现,cuiji_filter此时此刻只是一个视图,是我们从dataframe中看到的一部分,在下面copy操作完成之后,就是dataframe了;

8.条件筛选操作

    cuiji_filter = cuiji[(cuiji.create_date >= tstart) & (cuiji.create_date< tend)] # 案件催记池

     注意,括号内部,我们在用cui.create_date的时候,并没有给出引号

9.比较简单的,如果我们想查看数据的前N行,只需要 

   pirnt(cuiji_filter.head(N))

10.对于熊猫的分组查询操作:

     grouped=cuiji_filter.groupby(cuiji_filter['case_no'])     groupby里面放的是我们要按照哪一列来进行分组,和sql里面的groupby操作是一样的

     要注意:如果打印一下grouped的数据类型,我们发现它并不是一个dataframe格式,而是groupby格式;

11.如何把 groupby的统计结果转dataframe

grouped=cuiji_filter.groupby(cuiji_filter['case_no'])
cjnum=grouped.size() #按caseno统计催记数目
cjnum=pd.DataFrame(cjnum)
cjnum=cjnum.reset_index()

12.如何把groupby的结果转成dict格式

groupphone=cuiji_filter['phone'].groupby(cuiji_filter['case_no'])
Gp=dict(list(groupphone))

13.dataframe的连接操作

  cj=pd.merge(cuiji_filter, cjnum, on=['case_no'])

                                                                   

猜你喜欢

转载自www.cnblogs.com/GY-Zhu/p/9768070.html