样本数据表:
公司名称 | 电话 | 邮箱 | 企业地址 | 手动标签(额外根据Pivot标的不是源数据) |
---|---|---|---|---|
北京X1餐饮管理有限公司 | 15810v999 | 290486v4@qq.com | 北京市海淀区Xt平房 | 同一地址多家公司 |
天津市南星区xx2餐饮管理服务部 | 15810v99 | 290486v4@qq.com | 天津市南开区ABCDEFG 731 | |
北京X3有限公司 | 77777999900 | 7xbtyb7@qq.com | 北京市顺义区& | 同一电话有多家公司共用 |
北京星餐饮发展有限公司 | 0108*9859 | 1b90865b0@163.com | 北京市朝阳区X2号 | |
北京风餐饮管理有限公司 | 135&&199990 | 135&&199990@qq.com | 北京市海淀区Xt平房 | 同一地址多家公司 |
青岛肉餐饮有限公司 | 77777999900 | 青岛市1888号 | 同一电话有多家公司共用,同一地址多家公司 | |
青岛汪珠江路分公司 | 135111199990 | None | 青岛市1888号 | 同一地址多家公司 |
深圳市坪山区好大一家酒楼 | None | None | 深圳市坪山区aa号101 | 同一地址多家公司 |
深圳热热闹闹酒家有限公司 | 0755-9990055323 | 634590909@qq.com | 深圳市坪山区aa号101 | 同一电话有多家公司共用 |
深圳市味*vba餐饮管理有限公司 | 1v90865v0 | 1v90865v0 @163.com | 深圳市龙岗区公园401-COCOPAR | |
深圳市品鉴赏好物餐饮管理有限公司 | None | None | 深圳市南山区流溪河大院 | 同一地址多家公司 |
深圳市来又来不走餐饮有限公司 | None | None | 深圳市南山区流溪河大院 | 同一地址多家公司 |
深圳市福田区俊*vnb酒楼 | None | None | 深圳市福田区南方公园 | 同一地址多家公司 |
深圳市聚好价餐饮有限公司 | 0755-9990055323 | 227v876@qq.com | 深圳市福田区南方公园 | 同一地址多家公司,同一电话有多家公司共用 |
深圳市巨便宜酒楼有限公司 | None | None | 深圳市光明区奉还工业大门 |
,
实际上,一楼的回复可以更简单
import pandas as pd
df=pd.read_excel('sample.xlsx')
#如果原数据有none,就把它替换成缺失(如果是题主仅在示例中加的,那就忽略该代码)
df.replace('None',float('nan'),inplace=True)
df['phone_label']=df.groupby('电话')['公司名称'].transform(lambda x:'同一电话有多家公司共用' if x.count()>1 else '')
df['address_label']=df.groupby('企业地址')['公司名称'].transform(lambda x:'同一地址多家公司' if x.count()>1 else '')
df.to_excel('sample.xlsx',index=False)
这里生成的excel表仅仅给多个共用的打标签,否则单个的就不打了,为空白
用pandas最合适了
为了整理这个工商信息数据,需要先加载数据,接下来用数据处理方法(例如pandas)处理数据,并通过代码整理出有用的信息,最后存储到dataFrame中。
import pandas as pd
# 加载数据
data = pd.read_csv("company_data.csv")
# 只保留需要的列
data = data[["company_name", "address", "phone"]]
# 去掉重复行
data.drop_duplicates(subset="company_name", keep="first", inplace=True)
# 去掉空值
data.dropna(subset=["company_name", "address", "phone"], inplace=True)
# 保存到dataFrame中
data.to_csv("company_data_clean.csv", index=False)
这是一个简单的代码示例,根据实际情况,还可以增加更多的数据处理步骤。
您好,根据您描述的问题,需要对几万条公司数据的多个数据列进行筛选打标签等操作,建议不要使用pivot,处理起来会比较麻烦,你可以使用python中专门做数据处理的库pandas。使用这个库可以很方便的做数据的批量处理,尤其是excel这样的表格数据。
授人以鱼不如授人以渔,给您提供以下学习资料,相信您看过后能够轻松解决您的问题
Pandas处理Excel超简单:
https://blog.csdn.net/m0_59236127/article/details/122712241
Pandas(七)--分组、合并和连接:
https://blog.csdn.net/weixin_43145427/article/details/124526872
DataFrame的合并、分组聚合与数据透视表:
https://blog.csdn.net/Mart_inn/article/details/122216010
这是一个较为复杂的问题,在没有详细的数据格式和分析需求的情况下,很难提供具体的代码实现。
建议把数据导入到数据库中,比如 SQL Server、MySQL 等。然后通过使用 SQL 语句来进行数据分析和清理。
以下是一些 SQL 语句的示例,以帮助您提取数据:
查询有多个公司使用同一个电话号码的情况:
sql
Copy code
SELECT telephone, count()
FROM company_info
GROUP BY telephone
HAVING count() > 1;
查询有多个公司使用同一个地址的情况:
sql
Copy code
SELECT address, count()
FROM company_info
GROUP BY address
HAVING count() > 1;
通过使用上述语句,可以找到有重复的电话和地址,并进行手动标记。
如果想更详细地了解 SQL,可以学习一些相关的课程和教程,或查询相关的书籍。
谢谢回复!确实很简洁,而且输出结果不需要额外整理。
在 Python 中,您可以使用 Pandas 库来完成此任务。Pandas 是用于处理和分析数据的常用库。您可以使用 Pandas 的诸如 df[df["column_name"] condition value] 的语法对数据进行筛选,并创建一个新的列来存储标签。
以下是一个简单的示例:
import pandas as pd
# create a sample dataframe
df = pd.DataFrame({
"A": [1, 2, 3, 4, 5],
"B": [5, 4, 3, 2, 1],
"C": [10, 20, 30, 40, 50]
})
# condition 1: if A is greater than 3, label is 'high'
df['label1'] = np.where(df['A'] > 3, 'high', 'low')
# condition 2: if B is less than or equal to 2, label is 'critical'
df['label2'] = np.where(df['B'] <= 2, 'critical', 'normal')
# condition 3: if C is between 20 and 40, label is 'medium'
df['label3'] = np.where((df['C'] >= 20) & (df['C'] <= 40), 'medium', 'other')
print(df)
这样,您就可以创建多个筛选条件并对数据分别打标签。
这种方法的确可以解决问题,但是当数据量很大的时候,这个方法就不太可行了。你可以使用代码来完成这项工作,比如使用Python进行数据处理,使用pandas库进行数据分析和处理,使用数据清洗算法,例如正则表达式、字符串匹配算法等,最后将整理出来的数据保存到数据库或者文件系统中。希望这些建议对你有帮助。