Pandas简单操作

两种方式,一般用第一种就行了:

import pandas as pd 此种方式导入的话,是通过pd来调用pandas的自带方法

from pandas import * 此种方式导入的话,可以直接调用pandas的一些方法

import pandas as pd
import numpy as np

通过pd.read_csv()或pd.read_excel()来导入csv或xlsx文件,导入时默认将第一行的标题作为dataframe的标题。

table=pd.read_excel(‘435_1.xlsx’)#这一步可能需要10秒:DataFrame
table.head(3)#通过head()方法来查看表格的前几行,默认是前5行。数据最左侧的数字是这一行数据的索引(index),索引根据需要是可以更改的。

3.1 选择表格的哪几行

table[1:4]#选择表格的第2到第4条数据(1和4是左闭右开)
table[-3:-1] #选择的是表格的倒数第3和倒数第2个数据(如果要获取倒数第一个的话,可以采用table.tail(3)之类)

3.2选择表格的哪几列

可以通过指定列名,来获取想要的列的所有数据

cols=[‘CITE’,’PATN:PNO’]
table[cols].head(3)#这里table[cols]相当于另一个dataframe了,也可以通过head()方法来获取前五行
table_2 = table[cols][3:10] #还可以将这两列的4到10行的数据赋值给一个新的表格
table_2
a = [‘a’,’b’,’c’]

3.3 选择表格的某一单元格的数据

table.loc[2,’PATN:ISD’]#通过loc来定位单元格,这个方法一般用的不多,因为一般都是对一行数据进行操作,很少通过索引来定位一个元素。
table.iloc[2,3]#也可以用iloc方法,传入的值是行列索引的位置,用的更少
table.loc[0:3, [‘PATN:ISD’,’PATN:TTL’]]#还可以获取连续几行的哪几列数据

3.4 重点:选择某一列或多列满足何种条件的数据

table[‘PATN:ISD’]=pd.to_numeric(table[‘PATN:ISD’],errors=’ignore’)#pd.to_numeric()方法将发表日期列改为数值型,因为在下面需要和19800000进行大小比较
table_3=table[(table[‘PATN:ISD’]>19750000)&(table[‘PATN:ISD’]

table_4 = table[(table[‘PATN:ISD’] < 19800000) & (table[‘ASSG:NAM’].isnull())]
table_4.shape

table[table.isnull().any(axis=1)].shape #通过shape方法来查看获取的表格规格,这个结果说明任何一条数据都有空值,因为表格只有50001行

4.1.1 向表格增加一列空数据:dataframe.insert()

这里我想向表格增添一列’SCORES’,全部赋空值

table_5 = table[[‘CITE’, ‘PATN:PNO’]]
table_5.insert(2, ‘SCORES’, np.nan, True) #用insert方法在第二个位置后插入一列SCORES
table_5.shape

4.1.2 向表格增加一行数据

这里我新建了一条专利的数据,向这个表格添加这条数据

table_6=table.loc[0:2, [‘CITE’,’PATN:PNO’]]
table_6

方法一:创建一个Series,然后添加到表格里,默认添加到了表格末尾

s = pd.Series({‘CITE’:111, ‘PATN:PNO’:111})
table_6 = table_6.append(s, ignore_index=True)
table_6

table_6.shape[0]

方法二:用loc方法来赋值,索引选择表格的长度

table_6.loc[table_6.shape[0],:] = [222,222]
table_6

方法三:如果有两个列名一样的表格,就可以用concat方法合并两个表格

table_7 = table.loc[0:2, [‘CITE’, ‘PATN:PNO’]]
table_8 = table.loc[100:102, [‘CITE’, ‘PATN:PNO’]]
table_78 = pd.concat([table_7, table_8])

table_78 = pd.concat([table_7, table_8], ignore_index=True)

table_78

4.2.1 删除某一列或多列数据

table_9=table.loc[0:5, [‘CITE’,’PATN:PNO’,’INVT’]]
table_99=table_9.drop([‘CITE’,’PATN:PNO’],axis=1)#注意:这里使用drop后返回的是一个新的对象,原本的table_9没有变化
table_99

table_9

4.2.2 删除某一行或几行

table_9=table.loc[0:5, [‘CITE’,’PATN:PNO’,’INVT’,’PATN:ISD’]]
table_99=table_9.drop([0,2])#注意:这里使用drop后返回的是一个新的对象,原本的table_9没有变化
table_99

4.2.3 删除满足条件的所有数据(一般指某一列或某几列满足条件的所有数据项)

table_9=table.loc[0:5, [‘CITE’,’PATN:PNO’,’INVT’,’PATN:ISD’]]
table_99=table_9.drop(table_9[table_9[‘PATN:ISD’]>19790000].index)
table_99

4.3.1 修改某个单元格的数据

table_10=table.loc[0:5][[‘CITE’,’PATN:PNO’,’INVT’,’PATN:ISD’]]
table_10_copy=table_10.copy()#对原始单元格的数据进行修改,建议先创建副本,对副本进行修改数据的操作
table_10_copy

对某个单元格进行修改

table_10_copy.loc[2, ‘PATN:ISD’] = 100
table_10_copy

4.3.2 修改某一列满足条件的另外列的数据

这里将发表日期大于1979年的专利的发明人改为YUBOWEN

table_10 = table.loc[0:5][[‘CITE’, ‘PATN:PNO’, ‘INVT’, ‘PATN:ISD’]]
table_10_copy = table_10.copy() #对原始单元格的数据进行修改,建议先创建副本,对副本进行修改数据的操作
table_10_copy.loc[(table_10_copy[‘PATN:ISD’] > 19790000), ‘INVT’] = ‘YUBOWEN’
table_10_copy

4.3.3 难点:使用lambda函数进行较为复杂的操作

这里将所有发明人的名字改为小写,并且’~’间隔符改为’/’

table_10 = table.loc[0:5][[‘CITE’, ‘PATN:PNO’, ‘INVT’, ‘PATN:ISD’]]
table_10_copy = table_10.copy() #对原始单元格的数据进行修改,建议先创建副本,对副本进行修改数据的操作
table_10_copy

fuc = lambda x: x.lower().replace(‘~’, ‘/’)
table_10_copy[‘INVT’] = table_10_copy[‘INVT’].apply(fuc)
table_10_copy

table_10_copy.to_csv(‘table_10_copy.csv’,sep=’`’)
table_10_copy.to_excel(‘table_10_copy.xlsx’)

https://blog.csdn.net/weixin_29191669/article/details/112173535

https://blog.csdn.net/weixin_39945789/article/details/111045815

Original: https://blog.csdn.net/weixin_43736457/article/details/121500036
Author: weixin_43736457
Title: Pandas简单操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/675992/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球