假设我有一个数据库,其中包含具有以下数据元素的人员:
我从各种格式中获取了大量数据,其中包含您能想到的这些信息的各种合理变化。一些例子是:
当这些数据进来时,我需要写一些东西来匹配它。我不需要或期望获得超过 80% 的匹配率。自动匹配后,我会将不确定的匹配显示在网页上,供某人手动匹配。
其中一些复杂性是:
我已经看到SSIS有模糊匹配,但我们目前不使用SSIS,而且我发现它非常笨拙并且几乎不可能进行版本控制,所以它不是我的首选工具。但如果这是最好的,请告诉我。否则,是否有任何(最好是免费的,最好是基于 .NET 或T-SQL 的)工具/库/实用程序/技术用于解决此类问题?
我有一个包含名为id,country_name,location和total_deaths列的数据框.在进行数据清理过程时,我偶然发现了一个'\r'连接的值.完成清理过程后,我将生成的数据帧存储在destination.csv文件中.由于上面的特定行已\r附加,因此它始终会创建一个新行.
id 29
location Uttar Pradesh\r
country_name India
total_deaths 20
Run Code Online (Sandbox Code Playgroud)
我想删除\r.我试过了df.replace({'\r': ''}, regex=True).它不适合我.
还有其他解决方案.有人可以帮忙吗?
在上面的过程中,我迭代df以查看是否\r存在.如果存在,则需要更换.这里row.replace()或row.str.strip()似乎没有工作,或者我可能以错误的方式做到这一点.
我不想在使用时指定列名或行号replace().因为我无法确定只有"位置"列才会有\r.请在下面找到代码.
count = 0
for row_index, row in df.iterrows():
if re.search(r"\\r", str(row)):
print type(row) #Return type is pandas.Series
row.replace({r'\\r': ''} , regex=True)
print row
count += 1
Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框:
plan type hour status code
A cont 0 ok 010.0
A cont 2 ok 025GWA
A cont 0 notok 010VVT
A cont 0 other 6.05
A vend 1 ok 6.01
Run Code Online (Sandbox Code Playgroud)
列代码有几个字母不同的字符串字符。最后我想将“代码”列转换为浮动。我试过:
df['code'] = df['code'].str.extract('(\d+)').astype(float)
Run Code Online (Sandbox Code Playgroud)
但这样我得到了:
plan type hour status code
A cont 0 ok 10.0
A cont 2 ok 25.0
A cont 0 notok 10.0
A cont 0 other 6.0
A vend 1 ok 6.0
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到如下结果?
plan type hour status code
A cont 0 ok 10.00
A cont 2 …Run Code Online (Sandbox Code Playgroud) 问题:
如何使用 R 快速高效地从数据框中删除所有特殊字符?
进步:
这篇 SO文章详细介绍了如何删除特殊字符。我可以将 gsub 函数应用于单列(图像 1 和 2),但不能应用于整个数据帧。
问题:
我的数据帧由 100 多列整数、字符串等组成。当我尝试在数据帧上运行 gsub 时,它不会返回我想要的输出。相反,我得到了图 3 中所示的内容。
df <- read.csv("C:/test.csv")
dfa <- gsub("[[:punct:]]", "", df$a) #this works on a single column
dfb <- gsub("[[:punct:]]", "", df$b) #this works on a single column
df_all <- gsub("[[:punct:]]", "", df) #this does not work on the entire df
View(df_all)
Run Code Online (Sandbox Code Playgroud)
df - 这是原始数据框:
dfa - 这是应用于 b 列的 gsub。好的!
df_all - 这是应用于整个数据帧的 gsub。坏的!
概括:
有没有办法 gsub 整个数据帧?否则,应该使用 apply 函数吗?
根据应用程序的要求,我需要以逗号分隔格式显示所有组成的数据,以便管理员可以做出决定,我是Python的新手,不知道如何做到这一点.
样本可重复的数据
import pandas as pd
compnaies = ['Microsoft', 'Google', 'Amazon', 'Microsoft', 'Facebook', 'Google']
products = ['OS', 'Search', 'E-comm', 'X-box', 'Social Media', 'Android']
df = pd.DataFrame({'company' : compnaies, 'product':products })
-----------------------------------------------------------------
company product
0 Microsoft OS
1 Google Search
2 Amazon E-comm
3 Microsoft X-box
4 Facebook Social Media
5 Google Android
Run Code Online (Sandbox Code Playgroud)
现在我按照这个代码计算公司集团的数量
df.groupby(['company']).count()
Run Code Online (Sandbox Code Playgroud)
我需要下面提到的格式的数据,但不知道如何获得它
期望的输出
company count product
Amazon 1 E-comm
Facebook 1 Social Media
Google 2 Search, Android
Microsoft 2 OS, X-box
Run Code Online (Sandbox Code Playgroud) 我想将当前行的负值传递到上一行,方法是将它们添加到每个组中的上一行.以下是我的原始数据示例:
raw_data <- data.frame(GROUP = rep(c('A','B','C'),each = 6),
YEARMO = rep(c(201801:201806),3),
VALUE = c(100,-10,20,70,-50,30,20,60,40,-20,-10,50,0,10,-30,50,100,-100))
> raw_data
GROUP YEARMO VALUE
1 A 201801 100
2 A 201802 -10
3 A 201803 20
4 A 201804 70
5 A 201805 -50
6 A 201806 30
7 B 201801 20
8 B 201802 60
9 B 201803 40
10 B 201804 -20
11 B 201805 -10
12 B 201806 50
13 C 201801 0
14 C 201802 10
15 C 201803 -30
16 …Run Code Online (Sandbox Code Playgroud) 我正在处理患者信息数据集,并尝试使用 MATLAB 根据数据计算倾向得分。删除具有许多缺失值的特征后,我仍然留下几个缺失(NaN)值。
当我尝试使用以下 Matlab 代码(来自 Andrew Ng 的 Coursera 机器学习课程)执行逻辑回归时,由于这些缺失值,我会遇到错误,因为我的成本函数和梯度向量的值变为 NaN:
[m, n] = size(X);
X = [ones(m, 1) X];
initial_theta = ones(n+1, 1);
[cost, grad] = costFunction(initial_theta, X, y);
options = optimset('GradObj', 'on', 'MaxIter', 400);
[theta, cost] = ...
fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);
Run Code Online (Sandbox Code Playgroud)
注意:sigmoid 和 costfunction 是我为整体易用性而创建的工作函数。
如果我将所有 NaN 值替换为 1 或 0,则可以顺利执行计算。但是我不确定这是否是处理此问题的最佳方法,而且我也想知道我应该选择(通常)什么替换值获得使用缺失数据执行逻辑回归的最佳结果。使用特定数字(0 或 1 或其他数字)替换数据中所述缺失值有什么好处/缺点吗?
注意:我还将所有特征值标准化为 0-1 范围内。
对于这个问题的任何见解都将受到高度赞赏。谢谢
machine-learning nan missing-data logistic-regression data-cleaning
我想总结数据框中具有相同行键的行。
目的是缩小数据集的大小。
例如,如果数据框看起来像这样。
Fruit Count
Apple 10
Pear 20
Apple 5
Banana 7
Banana 12
Pear 8
Apple 10
Run Code Online (Sandbox Code Playgroud)
我希望最终的数据框看起来像这样。
Fruit Count
Apple 25
Pear 28
Banana 19
Run Code Online (Sandbox Code Playgroud)
我正在使用Python的pandas、numpy、matplotlib和其他数据分析包。有没有办法在 python 中使用这些包中的函数来做到这一点?
这是创建示例数据框的代码。
df = pd.DataFrame([["Apple", 10], ["Pear", 20], ["Apple", 5], ["Banana", 7], ["Banana", 12], ["Pear", 8], ["Apple", 10]], columns=["Fruit", "Count"])
Run Code Online (Sandbox Code Playgroud) 我有不同长度的向量例如,
a1 = c(1,2,3,4,5,6,7,8,9,10) a2 = c(1,3,4,5) a3 = c(1,2,5,6,9)
我想将 a2 和 a3 拉伸到 a1 的长度,因此我可以对其运行一些要求向量长度相同的算法。我会将 a1 截断为与 a2 和 a3 相同,但最终会丢失有价值的数据。
即也许 a2 可能看起来像 1 1 1 3 3 3 4 4 5 5 ?
任何建议都会很棒!谢谢
编辑:我需要它适用于具有重复值的向量,例如 c(1,1,2,2,2,2,3,3) 和延伸值来表示原始向量中重复值的数量,例如,如果我将示例向量拉伸到 100 的长度,我会期望 2 的数量多于 1 的数量。
interpolation r data-manipulation data-processing data-cleaning
我有一个数据集,其中人们的完整年龄为 R 中的字符串(例如,“10 年 8 个月 23 天)”,我需要将其转换为有意义的数字变量。我正在考虑将其转换为有多少天人的年龄(这很困难,因为月份有不同的天数)。因此,最好的解决方案可能是创建一个双变量,将年龄显示为 10.6 或 10.8,一些数字变量携带 10 年 8 个月 5 天大于的信息10年7月12天。
这是我当前变量的示例
library(tibble)
age <- tibble(complete_age =
c("10 years 8 months 23 days",
"9 years 11 months 7 days",
"11 years 3 months 1 day",
"8 years 6 months 12 days"))
age
# A tibble: 4 x 1
complete_age
<chr>
1 10 years 8 months 23 days
2 9 years 11 months 7 days
3 11 years 3 months 1 day
4 8 years …Run Code Online (Sandbox Code Playgroud) data-cleaning ×10
pandas ×4
python ×4
r ×4
.net ×1
algorithm ×1
c# ×1
data-science ×1
data.table ×1
dataframe ×1
dplyr ×1
lubridate ×1
missing-data ×1
nan ×1
numpy ×1
replace ×1
statistics ×1
stringr ×1