Pandas简单操作
一、导入pandas包两种方式,一般用第一种就行了:import pandas as pd 此种方式导入的话,是通过pd来调用pandas的自带方法from pandas import * 此种方式导入的话,可以直接调用pandas的一些方法import pandas as pdimport numpy as np二、导入数据通过pd.read_csv()或pd.read_excel()来导入cs
一、导入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 重点:选择某一列或多列满足何种条件的数据
1、这里我想选择发表日期在1975到1979年的所有数据,并且赋值给新的表格。
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']<19800000)]
table_3.shape
2、另一种情况,我想选择发表日期在1980年以前,并且ASSG:NAM列为空的所有数据,并且赋值给新的表格。
table_4 = table[(table['PATN:ISD'] < 19800000) & (table['ASSG:NAM'].isnull())]
table_4.shape
3、上面通过isnull()方法来筛选ASSG:NAM列所有为空的数据项,该方法同样可以对整个表格使用。下面我们找到含有空值的所有数据
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
更多推荐


所有评论(0)