基于scitometrics_2010-2020的引文分析
暑假,导师给了我一个任务,让我处理一个关于引文分析的数据,开始的时候一头雾水,不知道从何做起,但是这也算是我第一次一个人处理一些数据,在这段时间里面用到了一些程序,现在进行一个汇总的整理。
首先,我拿到的是一个excel表格,对于这个表格,我首先先把它按照doi的列,分开成一个个小的excel(也就是说一篇文章一个excel)
import pandas as pd
iris=pd.read_excel('scitometrics_2010-2020.xlsx')
class_list=list(iris['doi'].drop_duplicates())
for i in class_list:
iris1=iris[iris['doi']==i]
iris1.to_excel('所有excel\%s.xlsx'%(i))
然后对每一个excel进行统计
import xlwt
import codecs
import xlrd #导入包
import re
import os
def fun(path):
fileArray = []
for root, dirs, files in os.walk(path):
for fn in files:
eachpath = str(root+'/'+fn)
fileArray.append(eachpath)
return fileArray
def readxls(path):
xl=xlrd.open_workbook(path)
sheet=xl.sheets()[0] #第一个sheet
data=sheet.col_values(5)
# data=[] #建立一个列表存储独到的数据
#data.append(list(sheet.col_values(5)))
#print(data)
return data
def fenci(data):
word_listmg=[]
word_list=[]
for i in range (len(data)):
# print(i)
data[i]=data[i].replace(')','') #因为有一些有括号,所以在这里就删掉
data[i]=data[i].replace(',','')
data[i]=data[i].replace(';','')
data[i]=data[i].replace('.','')
data[i]=data[i].replace('(','')
data[i]=data[i].replace('al','')
word_listmg=data[i].split(' ')
word_list.extend(word_listmg) #正好第零个就是标题,就从第一个开始算起。
# print(word_list)
return word_list
def dingwei(list):
b=[]
for i in list:
if re.search('【#',i): #因为引文在数据文件里面已经标注出来了
b.append(i)
#print(b)
subl=[]
subl=[i for i in b if b.count(i)>1] #存的是出现两次及以上的
search=[]
search=set(subl)
#print(search)
for i in search:
elmt_index=[] #cunde 因为index不这样搞就只能出现第一次位置
s_index = 0
e_index = len(list)
while(s_index < e_index):
try:
temp = list.index(i,s_index,e_index)
elmt_index.append(temp)
s_index = temp + 1
except ValueError:
break
print(i,elmt_index)
def main():
path="所有excel"
fileArray=fun(path)
for raw_file_path in fileArray:
data=readxls(raw_file_path)
list=fenci(data)
dingwei(list)
print(raw_file_path+"已经完成")
if __name__ == '__main__':
main()
最终得到结果