常用pandas命令

常用的pandas命令:行列 row,column
pandas 基本的数据结构是 Series(数组) 和 DataFrame(类似二维数组),
Pandas 提供了 Index 对象,每个 Series 都会带有一个对应的Index,用来标记不同的元素,Index 的内容不一定是数字,也可以是字母、中文等,它类似于SQL中的主键。

1.Dateframe的查询

(1)loc——loc&iloc函数:

loc函数:通过行索引 “Index” 中的具体标签来取行数据(如取"Index"为"A"的行)
iloc函数:通过行号(位置)来取行数据
如:
data.loc[‘a’] #即取索引为a的行
data.loc[:,[‘A’]] #取’A’列所有行,多取几列格式为 data.loc[:,['A','B']]
data.iloc[:,[0]] #取第0列所有行,多取几列格式为 data.iloc[:,[0,1]]
利用loc函数,根据某个数据来提取数据所在的行
data.loc[data[‘A’]==0] #提取data数据(筛选条件: A列中数字为0所在的行数据)

data.loc[(data['A‘]==0) & ([data['data_io']>'2018-05-08') ] 

(2)isin——使用isin函数根据特定值筛选记录

如:df[df.a.isin([30,54])] #即筛选a值=30或54的记录
如:pi_df = pi_df.loc[~pi_df.index.isin(s_df_main.index)].copy() #从pi_df中筛选index不在s_df_main中的行

(3)at函数

根据指定行index及列label,快速定位DataFrame的元素,选择列时仅支持列名。
df.at[3,‘a’]
若列用index,则可用iat函数,如:df.iat(3,‘a’)

(4) 多条件筛选

可以使用&(并)与| (或)操作符或者特定的函数实现多条件筛选
df[(df[‘a’] > 30) & (df[‘b’] > 40)]
使用&筛选a列的取值大于30,b列的取值大于40的记录

先取出index,再合并set,进而isin
a = valid_i0.reset_index().set_index('cols').index.unique()
b= valid_s.reset_index().set_index('cols').index.unique()
ab_valid = set(po_valid_i0) | set(po_valid_s)

c.set_index('cols', inplace=True)
c = c.loc[(c['is_store'] != 1) | (po.index.isin(po_valid))].copy()
po.reset_index(inplace=True)```

(5)index 即重置行名

如:df.index=[‘aa’,‘bb’,‘cc’,‘dd’] #即重置行名为aa,bb,cc,dd

2.DataFrame的index、列名等的重置、排序

(1)set_index

设置索引列。
如:
new_df_drop_t = df.set_index(‘A’) #设置A列为索引列,同时删去之前的列
new_df_drop_f = df.set_index(‘A’,drop=False) #设置A列为索引列,并不删去之前列

加上inplace='True',原有表名称发生变化,如mng_wh_info
    mng_wh_info.set_index('org_id', inplace=True)
    mng_wh_info.sort_index(inplace=True)

(2)reset_index()

reset_index还原分为两种类型,
第一种是对原DataFrame进行reset,
new_reset_index = df.reset_index(drop=False) # 原有的索引不变添加列名index,同时在新列上重置索引
new_reset_index = df.reset_index(drop=True) # 在原有的索引列重置索引,不再另外添加新列

第二种是对使用过set_index()函数的DataFrame进行reset
new_reset_index = newdf.reset_index(drop=False) #索引列会被还原为普通列 默认的
new_reset_index = newdf.reset_index(drop=True) #索引会被直接删除

(3)按照某一列的大小进行排序

sort_index()
sort_index(axis=0,ascending=True)

参数说明

axis:0按照行名排序;1按照列名排序
ascending:默认True升序排列;False降序排列
如:
将’Date’设置为行索引并按时间排序:
app.set_index(‘Date’,inplace=True)
app.head()

sort_values()

DataFrame.sort_values(by=[’’], axis=0, ascending=True)

参数说明

axis:{0 or ‘index’, 1 or ‘columns’}
by:str or list of str;如果axis=0,那么by=“列名”;如果axis=1,那么by=“行名”;
ascending:True升序,可以是[True,False],即第一字段升序,第二个降序

(4)rename(columns = {……},inplace=‘True’)改变列名:

如:

第一种修改方法
df_rename = df.rename({'a': 're_a', 'b': 're_b', 'c': 're_c', 'd': 're_d'}, axis='columns')
或者:
df_rename({columns='A':'a','B':'b'},inplace='True')

#即把列中的a,b,c,d分别变为re_a,…

第二种修改方法
df_rename = df.rename(index={"07-01": 71, "07-02": 72, "07-03": 73}, 
                     columns={'a': 're_a', 'b': 're_b', 'c': 're_c'})

#即把行的index变,把列变为re_a,…

3.数据的清洗

(1)drop_duplicates()

对DataFrame格式的数据,去除特定列下面的重复行。返回DataFrame格式的数据。
data.drop_duplicates([‘k2’]) #对特定列k2去重

df.drop_duplicates(subset=['B'],keep=first,inplace=True) 
#只考虑B列(默认为所有列),keep=first默认保留第一次出现的值
df.drop_duplicates(subset=[a', 'b'], inplace=True)
# a列和b列去重

(2)drop() drop([],axis=1,inplace=‘True’)

删除 Series 的元素或 DataFrame 的某一行(列)
如:df.drop([‘oh’,‘te’],axis=1) # 删除oh,te列

(3)dropna()

删除含有空数据的全部行
df4 = df4.dropna(axis=1)# 通过axis参数来删除含有空数据的全部列
df4 = df4.dropna(subset=[“age”, “sex”])# subset参数删除在age和sex中含有空数据的全部行

(4)fillna()

df1.fillna(100) #用常数100填充空格/缺失数据/NAN
通过字典填充不同的常数:
df1.fillna({0:10,1:20,2:30})#第1,2,3,列分别填充10,20,30

4.两个DataFrame的合并

(1)append()

(2)concat()沿着一条轴,将多个对象堆叠到一起

axis是关键,它用于指定是行还是列,axis默认是0,列;1,行
如:

frames = [df1, df2]
pd.concat(frames)   #拼接df1及df2,上面是df1,下面是df2

pd.concat([df1,df1],ignore_index=True) 
默认ignore_index=False,此时后面的DataFrame中的索引直接拼接在后面,
而ignore_index=True的时候,后面的索引直接全部改变成数字。

(3)merge() 通过键拼接列 默认去交集inner

针对同一个主键存在两张不同字段的表,根据主键整合到一张表里面。

pd.merge(df1, df2[['a', 'b', 'c']].drop_duplicates(), how='inner', on=['a', 'b', 'c'])
df1,和df2中都存在a,b,c三列,将abc作为公共列予以合并
how=inner,left,right,outer,保留公共,左边表,右边表,都保留的意思

join() 少用

c = a.join(b, how='inner') 

5.数据的处理

groupby().sum()

df1=df.groupby(['a','b','c','d','e'])[['quant_io']].sum() 
 以abcde作为一组,对quant_io求和

groupby().apply()#apply里跟各种函数
如:
groupby(‘A’).apply(np.mean)与groupby(‘A’).mean()计算结果是一致的

或:
df1=df['quant_io'].apply(np.sign)  符号函数,直接判断quant_io是否为正,0,1
具体
df['qty'][df['qty']<0]=0
df1=df['qty'].apply(np.sign) 

其它:
(1)[]
选择列,选择行
df[‘A’] 通过name(键)选择列
df[[‘A’,‘B’]] 通过list选择列
df[0:3]通过index所在行选择行
df[‘20130102’:‘20130104’] 通过行index(键)选择行
dataset[(dataset[‘Sex’] == i) & (dataset[‘Pclass’] == j+1)][‘Age’] #布尔运算选择数据,以其他列为条件筛选数据,注意做布尔运算时最好将每个运算用括号括起来,像以下这种就会容易出问题:dataset[dataset[‘TARGET’].notnull() & dataset[‘need_pre’]!=1 ]

加不加[],生成的类型是不同的
type(data[“A1”])
pandas.core.series.Series
type(data[[“A1”]])
pandas.core.frame.DataFrame

类型

df[‘quant_io’] = df[‘quant_io’].astype(int) 强制将quant_io列转换成int整型
df.dtypes 检测dataframe df的类型

创建Dataframe

import pandas as pd
df1 = pd.DataFrame([[[1,2,3],[1,10,20]],columns=['x1','x2'])
或
df = pd.DataFrame({'a':['a0','a1'],'b':['b1;,'b2'],'c':['c1','c2','c3']})

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的纺织品企业财务管理系统,源码+数据库+毕业论文+视频演示 在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对纺织品企业财务信息管理的提升,也为了对纺织品企业财务信息进行更好的维护,纺织品企业财务管理系统的出现就变得水到渠成不可缺少。通过对纺织品企业财务管理系统的开发,不仅仅可以学以致用,让学到的知识变成成果出现,也强化了知识记忆,扩大了知识储备,是提升自我的一种很好的方法。通过具体的开发,对整个软件开发的过程熟练掌握,不论是前期的设计,还是后续的编码测试,都有了很深刻的认知。 纺织品企业财务管理系统通过MySQL数据库与Spring Boot框架进行开发,纺织品企业财务管理系统能够实现对财务人员,员工,收费信息,支出信息,薪资信息,留言信息,报销信息等信息的管理。 通过纺织品企业财务管理系统对相关信息的处理,让信息处理变的更加的系统,更加的规范,这是一个必然的结果。已经处理好的信息,不管是用来查找,还是分析,在效率上都会成倍的提高,让计算机变得更加符合生产需要,变成人们不可缺少的一种信息处理工具,实现了绿色办公,节省社会资源,为环境保护也做了力所能及的贡献。 关键字:纺织品企业财务管理系统,薪资信息,报销信息;SpringBoot
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值