有没有好的工具可以分析一些 csv 格式的数据文件。有没有任何易于使用的开源工具来显示 csv 文件中的数据?(请不要提及excel...)。最重要的是一个简单的文件导入(或者可能是文件夹读出)机制。
拥有超过 100 万行和 30 列的数据,其中一列是 user_id(超过 1500 个不同的用户)。我想要对本专栏进行单热编码,并在 ML 算法(xgboost、FFM、scikit)中使用数据。但是由于巨大的行数和唯一的用户值矩阵将是 ~ 100 万 X 1500,因此需要以稀疏格式执行此操作(否则数据会杀死所有 RAM)。
对我来说,通过 Pandas DataFrame 处理数据的便捷方式,现在它也支持稀疏格式:
df = pd.get_dummies(df, columns=['user_id', 'type'], sparse=True)
Run Code Online (Sandbox Code Playgroud)
工作速度非常快,而且内存很小。但是为了使用 scikit 算法和 xgboost,有必要将数据帧转换为稀疏矩阵。
有没有办法做到这一点,而不是遍历列并将它们堆叠在一个 scipy 稀疏矩阵中?我尝试了 df.as_matrix() 和 df.values,但首先将所有数据转换为密集的 MemoryError :(
PS 同样为 xgboost 获取 DMatrix
更新:
所以我发布下一个解决方案(将感谢优化建议):
def sparse_df_to_saprse_matrix (sparse_df):
index_list = sparse_df.index.values.tolist()
matrix_columns = []
sparse_matrix = None
for column in sparse_df.columns:
sps_series = sparse_df[column]
sps_series.index = pd.MultiIndex.from_product([index_list, [column]])
curr_sps_column, rows, cols = sps_series.to_coo()
if sparse_matrix != None:
sparse_matrix = sparse.hstack([sparse_matrix, …Run Code Online (Sandbox Code Playgroud) 给定一个数据框,如下所示:
x1 x2 x3 x4 x5 x6
1 2 3 4 5 6
3 4 5 6 3 3
1 2 3 6 1 2
Run Code Online (Sandbox Code Playgroud)
我如何创建一个新的“sum”列,它只添加 x1 + x3 + x4
x1 x2 x3 x4 x5 x6
1 2 3 4 5 6
3 4 5 6 3 3
1 2 3 6 1 2
Run Code Online (Sandbox Code Playgroud)
在我的实际数据框中,我有大约 100 列,所以有没有办法做到这一点而不必手动编写 x1 + x3 + ... + xn
例如,给定一个列表 [x1, x3, x4.. xn] df['sum'] = sum(df[list]) ?任何帮助表示赞赏,谢谢。
我有一个数据集,其中包含两个级别 Male(M) 和 Female(F) 的变量 GENDER 有很多缺失值。我如何处理缺失值?处理这些缺失值的不同方法是什么。任何帮助,将不胜感激。
我的数据框中有一列数字,我想将这些数字分类为例如高、低、排除。我如何做到这一点。我一无所知,我尝试查看剪切函数和类别数据类型。
我正在研究来自 Kaggle ( https://www.kaggle.com/c/titanic/data )的泰坦尼克号泰坦尼克号数据集,我正在尝试将各种模型应用于该数据集。
在这样做之前,我已经对数据集进行了以下修改:
df.train <- dplyr::select(df.train,-PassengerId,-Name,-Ticket,-Cabin)
df.train$Survived <- factor(df.train$Survived)
df.train$Pclass <- factor(df.train$Pclass)
df.train$Parch <- factor(df.train$Parch)
df.train$SibSp <- factor(df.train$SibSp)
Run Code Online (Sandbox Code Playgroud)
我也设定了年龄,我们处于这样的情况
anyNA(df.train) == F
因此,当我进行逻辑回归和 LDA 时,一切正常(即使令人惊讶的是它们提供了完全相同的结果),但是当我尝试时:
qda.model <- qda(Survived~. , data = df.train)
Run Code Online (Sandbox Code Playgroud)
我得到:
qda.default(x, grouping, ...) 中的错误:groupe 0 n'est pas de rang plein
据我所知,这意味着我有一个等级不足。
一些在线研究将我带到这里:https : //stats.stackexchange.com/questions/35071/what-is-rank-deficiency-and-how-to-deal-with-it
但我真的不明白数据有什么问题,我有 8 个预测变量和 891 个观察值,没有一个预测变量似乎是其他变量的线性组合。
你能解释一下这个 QDA 有什么问题吗?
非常感谢!
我在 Python 3 中做了一个凝聚层次聚类实验,我发现scipy.cluster.hierarchy.cut_tree()没有为某些输入链接矩阵返回请求的聚类数。所以,现在我知道有在一个bug cut_tree()函数(如描述在这里)。
但是,我需要能够获得平面聚类,并k为我的数据点分配不同的标签。您知道k从任意输入链接矩阵中获得带有标签的平面聚类的算法Z吗?我的问题归结为:如何cut_tree()在没有错误的情况下从头开始计算什么?
您可以使用此数据集测试您的代码。
from scipy.cluster.hierarchy import linkage, is_valid_linkage
from scipy.spatial.distance import pdist
## Load dataset
X = np.load("dataset.npy")
## Hierarchical clustering
dists = pdist(X)
Z = linkage(dists, method='centroid', metric='euclidean')
print(is_valid_linkage(Z))
## Now let's say we want the flat cluster assignement with 10 clusters.
# If cut_tree() was working we would do
from scipy.cluster.hierarchy import cut_tree
cut = cut_tree(Z, 10)
Run Code Online (Sandbox Code Playgroud)
旁注:另一种方法也许可以是使用 …
问题:让我们从 Kaggle 中获取 Titanic 数据集。我有包含“Pclass”、“Sex”和“Age”列的数据框。我需要在“年龄”列中用某个组的中位数填充 NaN。如果是 1st class 的女性,我想用 1st class 女性的中位数填充她的年龄,而不是整个 Age 列的中位数。
问题是如何在某个切片中进行这种更改?
我试过:
data['Age'][(data['Sex'] == 'female')&(data['Pclass'] == 1)&(data['Age'].isnull())].fillna(median)
Run Code Online (Sandbox Code Playgroud)
“中位数”是我的价值,但没有任何变化“就地=真”没有帮助。
非常感谢!
语境
我有大量带有分类的列,所有列都有不同的、不可排名的选择。为了让我的分析更容易,我想将它们中的每一个都转换为具有逻辑的多个列。例如:
1 GENRE
2 Pop
3 Classical
4 Jazz
Run Code Online (Sandbox Code Playgroud)
……会变成……
1 Pop Classical Jazz
2 1 0 0
3 0 1 0
4 0 0 1
Run Code Online (Sandbox Code Playgroud)
问题
我尝试过使用ind2vec,但这仅适用于数字或逻辑。我也遇到过这个,但不确定它是否适用于分类。在这种情况下使用什么函数才是正确的?
有没有用于数据分析和矩阵运算的GAS库?像 Python numpy&pandas或 JavaScript numjs&之类的东西undescorejs。我想在GAS中做一些统计操作。
data-analysis ×10
pandas ×4
python ×4
scipy ×2
statistics ×2
arrays ×1
csv ×1
data-science ×1
dataframe ×1
matlab ×1
missing-data ×1
numpy ×1
r ×1
scikit-learn ×1