写一个sql代码,当educationalRequirements等于0时,将数据更新为不限
时间: 2024-02-13 15:05:10 浏览: 19
假设要更新的表名为`job_listings`,`educationalRequirements`所在的列名为`edu_req`,可以使用以下SQL语句进行更新:
```
UPDATE job_listings SET edu_req = '不限' WHERE edu_req = 0;
```
其中,`SET`关键字后面指定要更新的列和新值,`WHERE`关键字后面指定更新条件。这条语句的意思是将`edu_req`为0的行的`edu_req`更新为不限。
相关问题
优化代码import json import requests from lxml import etree import pandas as pd import time #url='https://www.ptpress.com.cn/masterpiece/getMasterpieceListForPortal' #https://www.ptpress.com.cn/recommendBook/getRecommendTupeListForPortal #http://www.ptpress.com.cn/masterpiece/getMasterpieceListForPortal url='https://www.5iai.com/api/enterprise/job/public/es?pageSize=10&pageNumber=1'#目标数据文件的url #url = ' https://www.5iai.com/api/enterprise/job/public/es?pageSize=10&pageNumber=2&willNature=&function=&wageList=%255B%255D&workplace=&keyword=' for i in range (1,20): response=requests.get(url) aa=response.text print(type(aa)) json_text=json.loads(aa) print(type(json_text)) json_text.keys() bb=json_text['data'] print(type(bb)) print(bb.keys()) cc= bb['content'] print(type(cc)) ee0=cc[0] #是第一条信息 ee1=cc[1] len(cc)#是cc的第一个招聘的第一页招聘信息,是列表类型 print(type(ee0)) ee0.keys() ee1.keys()#0和1的的字典的键都是一样的 data=pd.DataFrame(cc) data.columns ff=data['enterpriseAddress'] print(type(ff)) gg0=ff[0] gg1=ff[1] hh0=gg0['detailedAddress'] hh1 = gg1['detailedAddress'] hh3= ff[2]['detailedAddress'] hh4= ff[3]['detailedAddress'] hh5=data['enterpriseAddress'] [4]['detailedAddress'] data['工作地址']=ff.apply(lambda x:x['detailedAddress']) data['工作地址']=data['enterpriseAddress'].apply(lambda x:x['detailedAddress']) data['工作城市']=data['enterpriseAddress'].apply(lambda x:x['cityCode']) kk=data['enterpriseExtInfo'] print(type(kk)) ll0=kk[0] data['公司名称']=data['enterpriseExtInfo'].apply(lambda x:x['shortName']) data['行业']=data['enterpriseExtInfo'].apply(lambda x:x['industry']) data['人员规模']=data['enterpriseExtInfo'].apply(lambda x:x['personScope']) data['企业性质']=data['enterpriseExtInfo'].apply(lambda x:x['econKind']) data.keys() colNames=['positionName','minimumWage','maximumWage','exp','educationalRequirements','工作地址','工作城市','公司名称','行业','人员规模','企业性质'] data_drop=data[colNames] #https: // www.5iai.com / api / enterprise / job / public?id = 1657941238357299201 #https: // www.5iai.com / api / enterprise / job / public?id = 1657941238353104896 data['id'] #print(type(data['id'])) #suburl='https://www.5iai.com/api/enterprise/job/public?id=1657941238353104896' jobDes = [] for idd in data['id']: suburl = 'https://www.5iai.com/api/enterprise/job/public?id={}'.format(idd) sub_response=requests.get(suburl) subb=sub_response.text #print(type(subb)) sub_text=json.loads(subb) #print(type(sub_text)) sub_text.keys subaa=sub_text['data'] #print(type(subaa)) subaa.keys jobms=subaa['jobRequiredments'] #print(type(jobDes)) jobDes.append(jobms) time.sleep(2) data_drop['职位描述']=jobDes
好的,以下是优化后的代码:
```python
import json
import requests
import pandas as pd
import time
url = 'https://www.5iai.com/api/enterprise/job/public/es?pageSize=10&pageNumber={}' # 目标数据文件的url
data_list = [] # 用于存放所有爬取到的数据
for i in range(1, 20):
response = requests.get(url.format(i))
json_text = json.loads(response.text)
content = json_text['data']['content']
data_list.extend(content)
time.sleep(2)
jobDes = [] # 用于存放职位描述
for data in data_list:
suburl = 'https://www.5iai.com/api/enterprise/job/public?id={}'.format(data['id'])
sub_response = requests.get(suburl)
sub_text = json.loads(sub_response.text)
jobDes.append(sub_text['data']['jobRequiredments'])
time.sleep(2)
# 将数据存入DataFrame中
data = pd.DataFrame(data_list)
data['职位描述'] = jobDes
# 选择需要的列
colNames = [
'positionName', 'minimumWage', 'maximumWage', 'exp', 'educationalRequirements',
'enterpriseAddress', 'enterpriseExtInfo'
]
data_drop = data[colNames]
# 对企业地址和扩展信息进行处理
data_drop['工作地址'] = data_drop['enterpriseAddress'].apply(lambda x: x['detailedAddress'])
data_drop['工作城市'] = data_drop['enterpriseAddress'].apply(lambda x: x['cityCode'])
data_drop['公司名称'] = data_drop['enterpriseExtInfo'].apply(lambda x: x['shortName'])
data_drop['行业'] = data_drop['enterpriseExtInfo'].apply(lambda x: x['industry'])
data_drop['人员规模'] = data_drop['enterpriseExtInfo'].apply(lambda x: x['personScope'])
data_drop['企业性质'] = data_drop['enterpriseExtInfo'].apply(lambda x: x['econKind'])
# 将职位描述放在最后一列
data_drop = data_drop[['positionName', 'minimumWage', 'maximumWage', 'exp', 'educationalRequirements',
'工作地址', '工作城市', '公司名称', '行业', '人员规模', '企业性质', '职位描述']]
print(data_drop.head()) # 打印前五行数据
```
代码中主要的优化包括:
1. 将爬取数据和处理数据分开,使代码更加清晰易懂。
2. 在爬取时引入延时,防止爬取过于频繁被网站封禁。
3. 将爬取和处理数据的过程封装到循环中,一次性爬取所有数据,避免多次请求。
4. 用 `extend` 方法将每页数据合并到一个列表中,避免了多次拼接数据带来的额外开销。
5. 对企业地址和扩展信息进行处理时,使用 `apply` 方法,避免了使用循环带来的额外开销。
这样,代码的可读性和可维护性都得到了提高。
优化代码import pandas as pd import matplotlib.pyplot as plt import re info=pd.read_csv('information3.csv',header=None) colNames=['positionName','minimumWage','maximumWage','exp', 'educationalRequirements','工作地址','工作城市', '公司名称','行业','人员规模','企业性质' ] info.columns=colNames info['minimumWage'] aa=info.loc[:,['minimumWage','maximumWage']] info['薪资']=aa.mean(axis=1) info['薪资']=info.loc[:,['minimumWage','maximumWage']].mean(axis=1) info['人员规模'] ren=info['人员规模'] renstr=info['人员规模'].str print(type(ren)) print(type(renstr)) mid=info['人员规模'].str.findall('\d+') print(type(mid)) mid[0] map(float,mid[0]) renzho=list(map(float,mid[0])) sum(renzho)/len(renzho) sum(list(map(float,mid[0])))/len(list(map(float,mid[0]))) personScope=mid.apply(lambda x:sum(list(map(float,x)))/len(list(map(float,x)))) info['人员规模']=personScope.astype('str')21:12# 招聘要求学历分析 a = info[4].value_counts() plt.rcParams['font.sans-serif'] = 'SimHei' # 设置绘图字体 plt.subplots_adjust(bottom=0.15) # 设置图形的底边距 plt.bar(a.index, a) # 绘制条形图 plt.xticks(rotation=45) # 坐标刻度旋转 plt.title('学历要求分布') plt.show() #招聘公司性质分析 b = info[9].value_counts() plt.rcParams['font.sans-serif'] = 'SimHei' # 设置绘图字体 plt.subplots_adjust(bottom=0.15) # 设置图形的底边距 plt.bar(b.index, b) # 绘制条形图 plt.xticks(rotation=45) # 坐标刻度旋转 plt.title('企业性质分布') plt.show()
可以尝试进行以下优化:
1. 使用适当的数据类型:在读取csv文件时,可以指定列的数据类型,如int、float等,这样可以提高代码的执行效率。
2. 尽可能使用向量化操作:在计算薪资和人员规模时,可以直接使用pandas的向量化操作,而不需要使用apply函数,这样可以提高代码的执行效率。
3. 避免重复代码:在绘制条形图时,可以将相同的代码封装成函数,避免重复写相同的代码。
优化后的代码如下:
```
import pandas as pd
import matplotlib.pyplot as plt
import re
# 读取csv文件,并指定列的数据类型
info=pd.read_csv('information3.csv',header=None, dtype={1: float, 2: float})
# 指定列名
colNames=['positionName','minimumWage','maximumWage','exp', 'educationalRequirements','工作地址','工作城市', '公司名称','行业','人员规模','企业性质' ]
info.columns=colNames
# 计算薪资和人员规模
info['薪资'] = info[['minimumWage','maximumWage']].mean(axis=1)
info['人员规模'] = info['人员规模'].str.findall('\d+').apply(lambda x: sum(map(float,x))/len(x)).astype(str)
# 绘制条形图的函数
def plot_bar(data, title):
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.subplots_adjust(bottom=0.15)
plt.bar(data.index, data)
plt.xticks(rotation=45)
plt.title(title)
plt.show()
# 招聘要求学历分析
a = info['educationalRequirements'].value_counts()
plot_bar(a, '学历要求分布')
# 招聘公司性质分析
b = info['企业性质'].value_counts()
plot_bar(b, '企业性质分布')
```