假设我有一个数据库,其中包含具有以下数据元素的人员:
我从各种格式中获取了大量数据,其中包含您能想到的这些信息的各种合理变化。一些例子是:
当这些数据进来时,我需要写一些东西来匹配它。我不需要或期望获得超过 80% 的匹配率。自动匹配后,我会将不确定的匹配显示在网页上,供某人手动匹配。
其中一些复杂性是:
我已经看到SSIS有模糊匹配,但我们目前不使用SSIS,而且我发现它非常笨拙并且几乎不可能进行版本控制,所以它不是我的首选工具。但如果这是最好的,请告诉我。否则,是否有任何(最好是免费的,最好是基于 .NET 或T-SQL 的)工具/库/实用程序/技术用于解决此类问题?
我最近一直在使用Coldfusion 9(主要是PHP的背景),我正试图弄清楚如何'清理/消毒'用户提交的输入/字符串.
我想让它成为HTMLSAFE,消除任何javascript或SQL查询注入,通常.我希望我忽略了CF9已经带来的某种功能.
有人能指出我正确的方向吗?
我目前有一个数据库,其中有些价格标签错误。
示例数据:
Product - Price - SalesDate
ProdA - 10 - 1/1/2016
ProdB - 20 - 1/2/2016
ProdA - 100 - 1/3/2016
ProdB - 20 - 1/4/2016
ProdB - 21 - 1/5/2016
ProdA - 11 - 1/6/2016
Run Code Online (Sandbox Code Playgroud)
在此数据集中,记录“ProdA - 100 - 1/3/2016”是有错误的记录。输入价格的人很可能犯了打字错误。此外,ProdA 在不同的日子可以改变它的价格,这使得这个问题变得有趣。
什么样的工具可以帮助我识别此类记录?SQL 可以帮助我检测异常数据点吗?我应该为此开始研究机器学习吗?
我正在尝试使用 pandas 清理数据。当我执行 df.datatypes 时,它显示列是对象类型。我希望将它们转换为数字类型。我尝试了各种方法来这样做;
data[['a','b']] = data[['a','b']].apply(pd.to_numeric, errors ='ignore')
Run Code Online (Sandbox Code Playgroud)
然后,
data['c'] = data['c'].infer_objects()
Run Code Online (Sandbox Code Playgroud)
但似乎没有任何效果。解释器不会抛出任何错误,但同时不会执行所需的转换。
任何帮助将不胜感激。
提前致谢。
我有一个数据框:
Name Hours_Worked
1 James 3
2 Sam 2.5
3 Billy T
4 Sarah A
5 Felix 5
Run Code Online (Sandbox Code Playgroud)
第一,如何计算具有非数字值的行数?
第二,如何过滤以识别包含非数字值的行?
我正在寻找清理 61k 行的数据集。我需要清理它的街道地址栏。目前,这些地址是一场噩梦。有时会写出完整地址(即 111 Frederick Douglass Blvd),有时会以简写形式写出相同地址(即 111 8th Ave/111 8th Avenue)。
我是 pandas/python 的新用户,所以我不知道如何解决如此巨大的清洁需求。在我使用 .replace() 之前,但这似乎是完全错误的方法。将不胜感激您的任何见解。
编辑:本质上我正在寻求标准化地址。地址输入不正确或采用多种不同的格式。长期目标是映射所有这些地址,但以数据目前的形式这是不可能的
数据集:https://data.cityofnewyork.us/City-Government/Evictions/6z8x-wfk4
我在表中有一个列,其中包含随机数据以及不同格式的电话号码。该列可能包含
例子:
1) Call back from +79005346546, Conversation started<br>Phone: +79005346546<br>Called twice Came from google.com<br>IP: 77.106.46.202 the web page address is xxx.com utm_medium: cpc<br>utm_campaign: 32587871<br>utm_content: 5283041 79005346546
2) John Smith
3) xxx@yyy.com
4) John Smith 8 999 888 77 77
Run Code Online (Sandbox Code Playgroud)
电话号码的写法也取决于。它可能像8 927 410 00 22, 8(927)410-00-22, +7(927)410-00-22, +7 (927) 410-00-22, (927)410 00 22, 927 410 00 22, 9(2741) 0 0 0-22等等
这里的通用规则是电话号码格式包含 10-11 位数字。
我最好的猜测是使用正则表达式并首先从字符串中删除电子邮件地址(因为它们可以包含电话号码,如 79990001122@gmail.com),然后使用一些正则表达式根据知道它是 10 或 11 位数字来提取电话用诸如,(,),+,-等字符分隔的行(我认为不会有人将其. …
在以下数据中,两个变量的水平均以数字编码
dat = read.csv("https://studio.edx.org/c4x/HarvardX/PH525.1x/asset/assoctest.csv")
head(dat)
Run Code Online (Sandbox Code Playgroud)
我将这些代码替换为字符串,以便于阅读和绘图。我可以使用 dplyr mutate 函数成功完成此操作。
dat_char = mutate(dat, allele=replace(allele, allele==0, "AA/Aa")) %>%
mutate(allele=replace(allele, allele==1, "aa")) %>%
mutate(case=replace(case, case==0, "control")) %>%
mutate(case=replace(case, case==1, "case"))
Run Code Online (Sandbox Code Playgroud)
上面的代码工作得很好,但是它是重复的并且写起来很繁琐。我确信有一种方法可以同时执行其中一些替换并精简代码,但我不确定如何进行。例如,我尝试使用向量作为查找和替换值。
dat_char = mutate(dat, allele=replace(allele, allele==c(0,1), c("AA/Aa", "aa"))) %>%
mutate(case=replace(case, case==c(0,1), c("control", "case")))
head(dat_char)
Run Code Online (Sandbox Code Playgroud)
这只会让事情变得一团糟,但它让我明白了我想要实现的目标。
我将使用内置chickwts数据作为示例。
这是数据,有 5 种提要类型。
> head(chickwts)
weight feed
1 179 horsebean
2 160 horsebean
3 136 horsebean
4 227 horsebean
5 217 horsebean
6 168 horsebean
> table(chickwts$feed)
casein horsebean linseed meatmeal soybean sunflower
12 10 12 11 14 12
Run Code Online (Sandbox Code Playgroud)
我想要的是每种饲料类型按重量计算的前几行。但是,对于每种 Feed 类型我都需要不同的编号吗?例如,
top_n_feed <-
c(
"casein" = 3,
"horsebean" = 5,
"linseed" = 3,
"meatmeal" = 6,
"soybean" = 3,
"sunflower" = 2
)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点dplyr?
要按n重量获得每种提要类型的顶行,我可以使用如下代码,但我不确定如何将其扩展到每种提要类型的不同数字。
chickwts %>%
group_by(feed) %>%
slice_max(order_by = weight, …Run Code Online (Sandbox Code Playgroud) 我有一个很难处理的 NBA 数据数据框。我想将 df1 更改为 df2,让两支球队和他们在同一行的比赛中得分两次,以从两支球队的角度来看比赛结果:
df1
GameID TeamID TeamAbb PTS
0 1001 TOR 99
0 1023 ATL 86
1 1004 DAL 102
1 1003 POR 100
2 1015 LAL 96
2 1029 MIL 85
df2
GameID Team1ID Team2ID Team1Abb Team2Abb Team1PTS Team2PTS
0 1001 1023 TOR ATL 99 86
0 1023 1001 ATL TOR 86 99
1 1004 1003 DAL POR 102 100
1 1003 1004 POR DAL 100 102
Run Code Online (Sandbox Code Playgroud)
所以本质上是数据框的一种加宽。
data-cleaning ×10
pandas ×4
python ×3
dplyr ×2
r ×2
sql ×2
.net ×1
algorithm ×1
c# ×1
coldfusion ×1
coldfusion-9 ×1
database ×1
python-3.x ×1
regex ×1
replace ×1
sql-server ×1