我从pandas中的csv获得了一个相当大的数据帧.
问题是在某些列上我得到了一些文本字符串,我想隔离最后一个字符以将其转换为整数.
我找到了解决方案,但我相信它不是最有效的.它是这样的:
import pandas as pd
df = pd.read_csv("filename")
cols = list(df.loc[:, 'col_a':'column_s'])
df_filtered = df[cols].dropna()
df_filtered['col_o'] = df_filtered['col_o'].str[-1:]
df_filtered['col_p'] = df_filtered['col_p'].str[-1:]
df_filtered['col_q'] = df_filtered['col_q'].str[-1:]
df_filtered['col_r'] = df_filtered['col_r'].str[-1:]
df_filtered['col_s'] = df_filtered['col_s'].str[-1:]
Run Code Online (Sandbox Code Playgroud)
在写作方面,这并不是真正有效的.所以我尝试过这样的事情:
colstofilter = list(df_filtered.loc[:, 'col_o':'col_s'])
for col in df_filtered[colstofilter]:
print(df_filtered[col].str[-1:].head())
Run Code Online (Sandbox Code Playgroud)
打印它给出了我想要的,但当我尝试将其转换为函数或lamba或将其应用于数据帧时,我得到一个错误,它不支持
假设我有一个数据样本,其中有两个类别标记为 0 和 1。当我运行 时output = clf.predict_proba(X_input), 中的每一行output由 2 列组成,对应于每个类别的概率。
第一列代表 0 类还是 1 类的概率?GradientBoostingClassier的predict_proba方法说:
“输入样本的类别概率。类别的顺序与属性classes_中的顺序相对应。”
这是否意味着数据样本的第一个元素(0 或 1)对应于 输出中的第一列predict_proba?
我想向数据透视表添加过滤条件,如下所示:
(选择 v2 的值等于 'A')
pd.pivot_table(df,index=['v1'],columns=['v2'=='A'],values=['v3'],aggfunc='count')
Run Code Online (Sandbox Code Playgroud)
那可能吗?
我正在尝试在 matlab 中实现一个函数来计算截断的有符号距离函数,以便使用类似于本文中描述的方法从点云渲染体积模型。谁能帮我?提前致谢。
由于某些原因,协变量的顺序似乎与LogisticRegressionscikit-learn中的分类器有关,这对我来说似乎很奇怪.我有9个协变量和一个二进制输出,当我改变列的顺序和调用fit()然后调用predict_proba()输出是不同的.下面的玩具示例
logit_model = LogisticRegression(C=1e9, tol=1e-15)
Run Code Online (Sandbox Code Playgroud)
下列
logit_model.fit(df['column_2','column_1'],df['target'])
logit_model.predict_proba(df['column_2','column_1'])
array([[ 0.27387109, 0.72612891] ..])
Run Code Online (Sandbox Code Playgroud)
给出不同的结果:
logit_model.fit(df['column_1','column_2'],df['target'])
logit_model.predict_proba(df['column_1','column_2'])
array([[ 0.26117794, 0.73882206], ..])
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很令人惊讶,但也许这就是我对算法内部和拟合方法缺乏了解.
我错过了什么?
编辑:这是完整的代码和数据
数据:https://s3-us-west-2.amazonaws.com/gjt-personal/test_model.csv
import pandas as pd
from sklearn.linear_model import LogisticRegression
df = pd.read_csv('test_model.csv',index_col=False)
columns1 =['col_1','col_2','col_3','col_4','col_5','col_6','col_7','col_8','col_9']
columns2 =['col_2','col_1','col_3','col_4','col_5','col_6','col_7','col_8','col_9']
logit_model = LogisticRegression(C=1e9, tol=1e-15)
logit_model.fit(df[columns1],df['target'])
logit_model.predict_proba(df[columns1])
logit_model.fit(df[columns2],df['target'])
logit_model.predict_proba(df[columns2])
Run Code Online (Sandbox Code Playgroud)
原来与之相关,tol=1e-15因为这会产生不同的结果.
LogisticRegression(C=1e9, tol=1e-15)
Run Code Online (Sandbox Code Playgroud)
但是这给出了相同的结果.
LogisticRegression(C=1e9)
Run Code Online (Sandbox Code Playgroud) 我有 Dataframe 可以简化为:
import pandas as pd
df = pd.DataFrame([{
'title': 'batman',
'text': 'man bat man bat',
'url': 'batman.com',
'label':1},
{'title': 'spiderman',
'text': 'spiderman man spider',
'url': 'spiderman.com',
'label':1},
{'title': 'doctor evil',
'text': 'a super evil doctor',
'url': 'evilempyre.com',
'label':0},])
Run Code Online (Sandbox Code Playgroud)
我想尝试不同的特征提取方法:TFIDF、word2vec、具有不同 ngram 设置的 Coutvectorizer 等。但我想尝试不同的组合:一个特征集将包含使用 TFIDF 转换的“文本”数据,以及使用Countvectoriser 和第二个将具有由 w2v 转换的文本数据,以及由 TFIDF 转换的“url”等。最后,当然,我想对不同的预处理策略进行比较并选择最好的一种。
以下是问题:
有没有办法使用 Pipeline 这样的标准 sklearn 工具来做这样的事情?
我的想法有常识吗?也许有一些好主意如何处理我所缺少的数据框中包含许多列的文本数据?
非常感谢!
根据“ 分类数据-操作”,默认情况下groupby将显示“未使用”类别:
In [118]: cats = pd.Categorical(["a","b","b","b","c","c","c"], categories=["a","b","c","d"])
In [119]: df = pd.DataFrame({"cats":cats,"values":[1,2,2,2,3,4,5]})
In [120]: df.groupby("cats").mean()
Out[120]:
values
cats
a 1.0
b 2.0
c 4.0
d NaN
Run Code Online (Sandbox Code Playgroud)
如何删除“未使用”类别的结果?例如
values
cats
a 1.0
b 2.0
c 4.0
Run Code Online (Sandbox Code Playgroud) 我有一个日期不完整的 DataFrame,我只需要每个月最后一天可用的日期/行。我尝试使用 TimeGrouper 并获取.last()每个组。
import pandas as pd
idx = [pd.datetime(2016,2,1),pd.datetime(2017,1,20),pd.datetime(2017,2,1),pd.datetime(2017,2,27)]
df = pd.DataFrame([1,2,3,4],index=idx)
df
0
2016-02-01 1
2017-01-20 2
2017-02-01 3
2017-02-27 4
Run Code Online (Sandbox Code Playgroud)
期待:
df_eom
0
2016-02-01 1
2017-01-20 2
2017-02-27 4
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个:
df_eom = df.groupby(pd.TimeGrouper(freq='1M')).last()
df_eom
0
2016-02-29 1.0
2016-03-31 NaN
2016-04-30 NaN
2016-05-31 NaN
2016-06-30 NaN
2016-07-31 NaN
2016-08-31 NaN
2016-09-30 NaN
2016-10-31 NaN
2016-11-30 NaN
2016-12-31 NaN
2017-01-31 2.0
2017-02-28 4.0
Run Code Online (Sandbox Code Playgroud)
它不仅创建了不在 df 中的日期,而且还更改了 df 第一行和最后一行的索引。我使用 TimeGrouper 错了吗?
我知道在 osx 终端中该命令find . -name 'filename.type'会找到我并向我返回该名称的文件。但是,我想知道是否有任何命令可以用来搜索部分文件名。
例如。假设我有一堆按顺序命名为“IMG_01”、“IMG_02”等的图像。是否有一个命令可以让我在一个或多个目录中搜索文件名中包含“IMG”的所有文件?
我正在从以下数据框在pandas / jupyter笔记本中创建子图
METHOD1 A B C D E
METHOD2
high 1410 14 426 13781 1
low 74142 303 757024 95105 37
medium 99174 670 277013 640000 127
mono 46599 207 405108 16793 160
axs = ct.plot(kind='barh', subplots=True, legend=False, figsize=(24,16))
for ax in axs:
ax.set_xscale('log')
Run Code Online (Sandbox Code Playgroud)
在Jupyter中,我得到一张包含4个子图的图像。我想将该图保存为一个png,但是
fig=axs.get_figure()
fig.savefig('plot.png')
Run Code Online (Sandbox Code Playgroud)
给出错误信息
AttributeError:“ numpy.ndarray”对象没有属性“ get_figure”
因为axs是子图的数组,所以我可以保存单个子图。
如何将所有子图保存到一张图像?
python ×8
pandas ×7
scikit-learn ×3
python-3.x ×2
3d ×1
dataframe ×1
macos ×1
matlab ×1
matplotlib ×1
pivot-table ×1
plot ×1
point-clouds ×1
terminal ×1