1).我有以下示例数据集:
>>> df
ID Region count
0 100 Asia 2
1 101 Europe 3
2 102 US 1
3 103 Africa 5
4 100 Russia 5
5 101 Australia 7
6 102 US 8
7 104 Asia 10
8 105 Europe 11
9 110 Africa 23
Run Code Online (Sandbox Code Playgroud)
我想通过ID和Region对这个数据集的观察进行分组,并总结每个组的计数.所以我使用了这样的东西:
>>> print(df.groupby(['ID','Region'],as_index=False).count().sum())
ID Region count
0 100 Asia 2
1 100 Russia 5
2 101 Australia 7
3 101 Europe 3
4 102 US 9
5 103 Africa 5
6 104 Asia 10 …
Run Code Online (Sandbox Code Playgroud) 我有一个pandas数据框,有一些行和列.每列都有一个标题.现在,只要我继续在pandas中进行数据操作操作,我的变量头就会被保留.但是如果我尝试使用Sci-kit-learn lib的一些数据预处理功能,我最终会丢失所有标题,并且帧会转换为数字矩阵.
我理解为什么会发生这种情况,因为scikit-learn给出了一个numpy ndarray作为输出.而numpy ndarray只是矩阵不会有列名.
但事情就是这样.如果我在我的数据集上构建一些模型,即使在初始数据预处理和尝试某些模型之后,我可能还需要做一些更多的数据操作任务来运行其他模型以获得更好的拟合.无法访问列标题使得很难进行数据操作,因为我可能不知道特定变量的索引是什么,但是更容易记住变量名,甚至可以通过执行df.columns来查找.
如何克服这个?
EDIT1:使用示例数据快照进行编辑.
Pclass Sex Age SibSp Parch Fare Embarked
0 3 0 22 1 0 7.2500 1
1 1 1 38 1 0 71.2833 2
2 3 1 26 0 0 7.9250 1
3 1 1 35 1 0 53.1000 1
4 3 0 35 0 0 8.0500 1
5 3 0 NaN 0 0 8.4583 3
6 1 0 54 0 0 51.8625 1
7 3 0 2 3 1 21.0750 1
8 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在pandas中的连续值列上创建直方图.写了下面的代码:
fig=plt.figure(figsize=(17,10))
trip_data.hist(column="Trip_distance")
plt.xlabel("Trip_distance",fontsize=15)
plt.ylabel("Frequency",fontsize=15)
plt.xlim([0.0,100.0])
#plt.legend(loc='center left', bbox_to_anchor=(1.0, 0.5))
Run Code Online (Sandbox Code Playgroud)
但我不确定,为什么所有的值都给出了相同的频率曲线,而这种曲线不应该是这种情况.代码有什么问题吗?
测试数据:
VendorID lpep_pickup_datetime Lpep_dropoff_datetime Store_and_fwd_flag RateCodeID Pickup_longitude Pickup_latitude Dropoff_longitude Dropoff_latitude Passenger_count Trip_distance Fare_amount Extra MTA_tax Tip_amount Tolls_amount Ehail_fee improvement_surcharge Total_amount Payment_type Trip_type
0 2 2015-09-01 00:02:34 2015-09-01 00:02:38 N 5 -73.979485 40.684956 -73.979431 40.685020 1 0.00 7.8 0.0 0.0 1.95 0.0 NaN 0.0 9.75 1 2.0
1 2 2015-09-01 00:04:20 2015-09-01 00:04:24 N 5 -74.010796 40.912216 -74.010780 40.912212 1 0.00 45.0 0.0 0.0 0.00 0.0 NaN 0.0 45.00 1 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试做一些深入的学习工作.为此,我首先在Python环境中安装了所有用于深度学习的软件包.
这就是我做的.
在Anaconda中,我创建了一个tensorflow
如下所示的环境
conda create -n tensorflow
Run Code Online (Sandbox Code Playgroud)
然后在其中安装了数据科学Python包,如Pandas,NumPy等.我还在那里安装了TensorFlow和Keras.以下是该环境中的包列表
(tensorflow) SFOM00618927A:dl i854319$ conda list
# packages in environment at /Users/i854319/anaconda/envs/tensorflow:
#
appdirs 1.4.3 <pip>
appnope 0.1.0 py36_0
beautifulsoup4 4.5.3 py36_0
bleach 1.5.0 py36_0
cycler 0.10.0 py36_0
decorator 4.0.11 py36_0
entrypoints 0.2.2 py36_1
freetype 2.5.5 2
html5lib 0.999 py36_0
icu 54.1 0
ipykernel 4.5.2 py36_0
ipython 5.3.0 py36_0
ipython_genutils 0.2.0 py36_0
ipywidgets 6.0.0 py36_0
jinja2 2.9.5 py36_0
jsonschema 2.5.1 py36_0
jupyter 1.0.0 py36_3
jupyter_client 5.0.0 py36_0
jupyter_console 5.1.0 py36_0
jupyter_core …
Run Code Online (Sandbox Code Playgroud) 我有一个Json文件如下.这是一个dicts列表.
[{"city": "ab", "trips": 4, "date": "2014-01-25", "value": 4.7, "price": 1.1, "request_date": "2014-06-17", "medium": "iPhone", "%price": 15.4, "type": true, "Weekly_pct": 46.2, "avg_dist": 3.67, "avg_price": 5.0}, {"city": "bc", "trips": 0, "date": "2014-01-29", "value": 5.0, "price": 1.0, "request_date": "2014-05-05", "medium": "Android", "%price": 0.0, "type": false, "weekly_pct": 50.0, "avg_dist": 8.26, "avg_price": 5.0}.....]
Run Code Online (Sandbox Code Playgroud)
当我用这个读到这个:
data=pd.read_json('dataset.json')
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ValueError:预期的对象或值
我也试过这个:
from ast import literal_eval
with open('dataset.json') as f:
data = literal_eval(f.read())
df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
ValueError:格式错误的字符串
编辑:
即使Json.loads也行不通.试过这个:
import json
data=json.loads('dataset.json')
Run Code Online (Sandbox Code Playgroud)
ValueError:无法解码JSON对象
Json文件是13.5MB,但它似乎有大量的数据.
我早些时候在这里看过这个问题,并从中吸取了教训.但是,当我觉得它应该有效时,我不确定为什么会出现错误.
我想DataFrame
通过一些规则在现有的Spark中创建一个新列.这是我写的.iris_spark是具有分类变量iris_spark的数据框,具有三个不同的类别.
from pyspark.sql import functions as F
iris_spark_df = iris_spark.withColumn(
"Class",
F.when(iris_spark.iris_class == 'Iris-setosa', 0, F.when(iris_spark.iris_class == 'Iris-versicolor',1)).otherwise(2))
Run Code Online (Sandbox Code Playgroud)
引发以下错误.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-157-21818c7dc060> in <module>()
----> 1 iris_spark_df=iris_spark.withColumn("Class",F.when(iris_spark.iris_class=='Iris-setosa',0,F.when(iris_spark.iris_class=='Iris-versicolor',1)))
TypeError: when() takes exactly 2 arguments (3 given)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-157-21818c7dc060> in <module>()
----> 1 iris_spark_df=iris_spark.withColumn("Class",F.when(iris_spark.iris_class=='Iris-setosa',0,F.when(iris_spark.iris_class=='Iris-versicolor',1)))
TypeError: when() takes exactly 2 arguments (3 given)
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
我有一个火花数据框架,我想分为火车,验证和测试,比例为0.60,0.20,0.20.
我使用以下代码:
def data_split(x):
global data_map_var
d_map = data_map_var.value
data_row = x.asDict()
import random
rand = random.uniform(0.0,1.0)
ret_list = ()
if rand <= 0.6:
ret_list = (data_row['TRANS'] , d_map[data_row['ITEM']] , data_row['Ratings'] , 'train')
elif rand <=0.8:
ret_list = (data_row['TRANS'] , d_map[data_row['ITEM']] , data_row['Ratings'] , 'test')
else:
ret_list = (data_row['TRANS'] , d_map[data_row['ITEM']] , data_row['Ratings'] , 'validation')
return ret_list
?
?
split_sdf = ratings_sdf.map(data_split)
train_sdf = split_sdf.filter(lambda x : x[-1] == 'train').map(lambda x :(x[0],x[1],x[2]))
test_sdf = split_sdf.filter(lambda x : x[-1] == 'test').map(lambda …
Run Code Online (Sandbox Code Playgroud) 我有一个IPython笔记本,我试图转换为PDF格式.但是当我去文件并以PDF格式下载时,它会给我以下错误:
nbconvert failed: PDF creating failed
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?我认为一些依赖似乎缺失了.你能建议如何在anaconda中安装它们吗?
编辑:
当我以PDF格式下载时,添加打印到控制台的日志.
[I 16:00:48.396 NotebookApp] Loaded template article.tplx
[I 16:00:49.414 NotebookApp] Writing 51786 bytes to notebook.tex
[I 16:00:49.415 NotebookApp] Building PDF
[I 16:00:49.435 NotebookApp] Running pdflatex 3 times: [u'pdflatex', u'notebook.tex']
[C 16:00:49.853 NotebookApp] pdflatex failed: [u'pdflatex', u'notebook.tex']
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex)
restricted \write18 enabled.
entering extended mode
(./notebook.tex
LaTeX2e <2014/05/01>
Babel <3.9k> and hyphenation patterns for 21 languages loaded.
(/usr/local/texlive/2014basic/texmf-dist/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用scikit-learn在数据集上运行一些机器学习算法.我的数据集有一些类似于类别的功能.就像一个特征是A,其值1,2,3指定了某些东西的质量.1:Upper, 2: Second, 3: Third class
.所以它就像一个序数变量.
同样地,我已经重新编码的变量城市,有三个值('London', Zurich', 'New York'
成1,2,3
,但与价值没有具体的偏好.所以现在这是一个名义上的分类变量.
如何在pandas中指定算法将其视为分类和序数等?与R一样,分类变量由因子(a)指定,因此不被视为连续值.在pandas/python中有类似的东西吗?
解决这个问题的最佳方法是什么?
谢谢
我知道在 Python 中可以使用反斜杠甚至括号将行分成多行。
但不知怎的,当我这样做时,在 pyspark 中,我确实得到了下一行红色,这表明可能有问题。
(conf.setAppName('Learnfit_Recommender')
.set("spark.executor.memory", "10g")
.set("spark.executor.cores",5)
.set("spark.executor.instances",50)
.set("spark.yarn.executor.memoryOverhead",1024)
)
Run Code Online (Sandbox Code Playgroud)
编辑1:我将括号更改为反斜杠。如果你看这张图片,我会发现很少有“。” 为红色,甚至 sc 变量也被标记为红色。
这是 pyspark 中换行的正确方法吗?
python ×9
pandas ×5
apache-spark ×3
pyspark ×3
scikit-learn ×2
group-by ×1
json ×1
keras ×1
latex ×1
numpy ×1
rename ×1
tensorflow ×1