pandas学习笔记2
作者:互联网
1、筛选用法
loc、where
• orgin_excel.loc[(orgin_excel['投资时间'].astype(str) <'2020-10-01')&(orgin_excel['数据状态'].isnull())&(orgin_excel['数据源'].str.contains('调研')),'数据状态']='删除' • orgin_excel['删除理由']=np.where((orgin_excel['数据状态'] =='重复删除'), '问卷填写重复',orgin_excel['删除理由']) • diaoyan_money234.loc[:,'New_ID_x']=diaoyan_money234['New_ID_x'].reindex_like(diaoyan_money234['New_ID_y'])
• df.query('column1 > 2 and column 2<1') • DataFrame.filter(items=None, like=None, regex=None, axis=None) • df1=df.groupby('district').filter(lambda x: x['age'].mean()>20) 结果会将所有age>20的district的行选掉,返回所有其他值。 2、去重用法
• orgin_excel['数据状态']=np.where(orgin_excel.duplicated(subset=['排名用全称','受资方全称','投资时间','基金全称','投资币种','投资金额(M)','数据源'],keep='first') &(orgin_excel['数据源'].str.contains('调研')), '重复删除',orgin_excel['数据状态']) 用法:DataFrame.duplicated(subset=None, keep='first')
• orgin_res2 = orgin_res1.groupby(['排名用全称','受资方全称','投资时间_x']).filter(lambda x: len(x) > 1)
3、字符转换 整列转字符: orgin_excel['New_ID']=orgin_excel['New_ID'].map(str) 时间转整型 orgin_res1=orgin_res.loc[(orgin_res['投资时间_x']-orgin_res['投资时间_y']).astype('timedelta64[D]').astype(float).abs()<=90]
4、去重取条数 groupby count • diaoyan_org_row=orgin_excel.loc[(orgin_excel['数据源'].str.contains('调研'))&(orgin_excel['数据状态'].isna())].groupby(['排名用全称','受资方全称','投资时间']).agg({'New_ID': ','.join,"条数" : "size"})
• diaoyan_org_list=orgin_excel.loc[orgin_excel['数据源'].str.contains('调研') & orgin_excel['数据状态'].isnull()==True].groupby(['排名用全称','受资方全称','投资时间']).size().reset_index(name='counts')
1. count:size 2. Groupby concat :.agg({'New_ID': ','.join} 3. Count 列重命名 .size().reset_index(name='counts')
5、关联
• orgin_rows=pd.merge(diaoyan_row_org1,simutong_row_org1,on=['排名用全称','受资方全称'],how='inner') 用法:pd.merge(DateFrame1,DateFrame2,on = ' ',how = ' ')
关联并取自己想要的字段 • diaoyan_jijin=pd.merge(orgin_excel,diaoyan_org_jijin,on=['New_ID','排名用全称','受资方全称','投资时间'],how='inner')[['排名用全称','受资方全称','投资时间','条数_y','New_ID','基金全称']] 关联并重置索引 • orgin_jijin=pd.merge(diaoyan_jijin,simutong_jijin,on=['排名用全称','受资方全称','条数_y'],how='inner').reset_index()
6、包含 contains 单个字段值包含某个字符串 orgin_money2['来源详情'].str.contains('问卷') 取反 orgin_money2['来源详情'].str.contains('问卷')==False
Isin • new = data["Gender"].isin(["Male"])
用法:DataFrame.isin(values) (可整列使用)
7、空值处理 • 增加一列空值 orgin_excel['数据状态']=None • 筛选空值 1. Isna() isnull() 2. notna() notnull()
特别想说 刚学习pandas的时候 什么也不会 连怎么取两列都不知道 在此特将方法贡献给和我一样的小菜鸟们 XX[['me','you']]
• orgin_excel.loc[(orgin_excel['投资时间'].astype(str) <'2020-10-01')&(orgin_excel['数据状态'].isnull())&(orgin_excel['数据源'].str.contains('调研')),'数据状态']='删除' • orgin_excel['删除理由']=np.where((orgin_excel['数据状态'] =='重复删除'), '问卷填写重复',orgin_excel['删除理由']) • diaoyan_money234.loc[:,'New_ID_x']=diaoyan_money234['New_ID_x'].reindex_like(diaoyan_money234['New_ID_y'])
• df.query('column1 > 2 and column 2<1') • DataFrame.filter(items=None, like=None, regex=None, axis=None) • df1=df.groupby('district').filter(lambda x: x['age'].mean()>20) 结果会将所有age>20的district的行选掉,返回所有其他值。 2、去重用法
• orgin_excel['数据状态']=np.where(orgin_excel.duplicated(subset=['排名用全称','受资方全称','投资时间','基金全称','投资币种','投资金额(M)','数据源'],keep='first') &(orgin_excel['数据源'].str.contains('调研')), '重复删除',orgin_excel['数据状态']) 用法:DataFrame.duplicated(subset=None, keep='first')
• orgin_res2 = orgin_res1.groupby(['排名用全称','受资方全称','投资时间_x']).filter(lambda x: len(x) > 1)
3、字符转换 整列转字符: orgin_excel['New_ID']=orgin_excel['New_ID'].map(str) 时间转整型 orgin_res1=orgin_res.loc[(orgin_res['投资时间_x']-orgin_res['投资时间_y']).astype('timedelta64[D]').astype(float).abs()<=90]
4、去重取条数 groupby count • diaoyan_org_row=orgin_excel.loc[(orgin_excel['数据源'].str.contains('调研'))&(orgin_excel['数据状态'].isna())].groupby(['排名用全称','受资方全称','投资时间']).agg({'New_ID': ','.join,"条数" : "size"})
• diaoyan_org_list=orgin_excel.loc[orgin_excel['数据源'].str.contains('调研') & orgin_excel['数据状态'].isnull()==True].groupby(['排名用全称','受资方全称','投资时间']).size().reset_index(name='counts')
1. count:size 2. Groupby concat :.agg({'New_ID': ','.join} 3. Count 列重命名 .size().reset_index(name='counts')
5、关联
• orgin_rows=pd.merge(diaoyan_row_org1,simutong_row_org1,on=['排名用全称','受资方全称'],how='inner') 用法:pd.merge(DateFrame1,DateFrame2,on = ' ',how = ' ')
关联并取自己想要的字段 • diaoyan_jijin=pd.merge(orgin_excel,diaoyan_org_jijin,on=['New_ID','排名用全称','受资方全称','投资时间'],how='inner')[['排名用全称','受资方全称','投资时间','条数_y','New_ID','基金全称']] 关联并重置索引 • orgin_jijin=pd.merge(diaoyan_jijin,simutong_jijin,on=['排名用全称','受资方全称','条数_y'],how='inner').reset_index()
6、包含 contains 单个字段值包含某个字符串 orgin_money2['来源详情'].str.contains('问卷') 取反 orgin_money2['来源详情'].str.contains('问卷')==False
Isin • new = data["Gender"].isin(["Male"])
用法:DataFrame.isin(values) (可整列使用)
7、空值处理 • 增加一列空值 orgin_excel['数据状态']=None • 筛选空值 1. Isna() isnull() 2. notna() notnull()
特别想说 刚学习pandas的时候 什么也不会 连怎么取两列都不知道 在此特将方法贡献给和我一样的小菜鸟们 XX[['me','you']]
标签:diaoyan,全称,excel,笔记,学习,str,资方,pandas,orgin 来源: https://www.cnblogs.com/mollyliu/p/15357345.html