小编phy*_*ker的帖子

如何在python中更改"保存图"的默认路径?

我有一个python代码来创建一个数字.在展示之后plt.show(),我想保存这个数字.
为了避免弄乱纵横比,分辨率等,我不想savefig在代码中使用-command.相反,我想使用图窗口中的"保存图"按钮.
但是,默认情况下,它会提示我的主文件夹作为保存位置.我希望save能自动存在于执行代码的目录中.
如何/在哪里可以更改此窗口默认路径以保存到当前文件夹(或其他位置)?

我在开始时尝试将此命令从 Change目录更改为Python脚本的目录,但它没有帮助,即使正确提供了文件名:

os.chdir(os.path.dirname(__file__))
Run Code Online (Sandbox Code Playgroud)

python path matplotlib save

10
推荐指数
1
解决办法
4076
查看次数

使用 JSON 功能读取 CSV

我正在尝试读取包含 JSON 功能的大型 CSV(位置位于此处)。对于第一行,假设有 100 行,文件如下所示:

Time,location,labelA,labelB
2019-09-10,{"lng":12.9,"alt":413.0,"time":"2019-09-10","error":7.0,"lat":17.8},nan,nan
Run Code Online (Sandbox Code Playgroud)

我按照这个问题来解析位置列。该解决方案基本上将助手定义为:

def CustomParser(data):
    import json
    j1 = json.loads(data)
    return j1
Run Code Online (Sandbox Code Playgroud)

进而

df=pd.read_csv('data.csv', nrows=100,converters={'location':CustomParser},header=0)
Run Code Online (Sandbox Code Playgroud)

我收到以下与 JSON 格式相关的错误:

JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Run Code Online (Sandbox Code Playgroud)

Q1:如何将特征位置解析到新列上?

Q2(一般情况):对于数据中的 nrows>100,最后一个特征(labelA 和 labelB)也具有具有不同键和值的 JSON 格式。我怎样才能通过解析包含 JSON(甚至部分)的每个功能来读取整个 CSV?

test100v1.csv

Zeit,device,Text,Typ,Position,Data,Data1,Data2
2019-09-10T12:13:24.000Z,CO 5052994,Lifesign,cgmon_Lifesign,{"lng":12.9975201,"alt":413.0,"time":"2019-09-10T12:09:58Z","error":7.0,"lat":47.8258582},N/A,N/A,N/A
2019-09-10T12:13:23.000Z,CO 5050450,Lifesign,cgmon_Lifesign,{"lng":14.3195367,"alt":260.0,"time":"2019-09-10T12:12:37Z","error":10.0,"lat":48.2695571},N/A,N/A,N/A
2019-09-10T12:13:21.000Z,CO 5050903,Location updated,c8y_LocationUpdate,{"lng":15.2678846,"alt":494.0,"time":"2019-09-10T12:13:21Z","error":11.0,"lat":48.7477466},N/A,N/A,N/A
2019-09-10T12:13:20.000Z,CO 5051466,Location updated,c8y_LocationUpdate,{"lng":17.64815,"alt":106.0,"time":"2019-09-10T12:13:20Z","error":3.0,"lat":47.6851036},N/A,N/A,N/A
2019-09-10T12:13:20.000Z,CO 5050569,Location updated,c8y_LocationUpdate,{"lng":14.0582286,"alt":286.0,"time":"2019-09-10T12:13:20Z","error":14.0,"lat":48.1808019},N/A,N/A,N/A
2019-09-10T12:13:18.000Z,CO 5050666,Location updated,c8y_LocationUpdate,{"lng":14.5788998,"alt":25.0,"time":"2019-09-10T12:13:18Z","error":12.0,"lat":53.4233772},N/A,N/A,N/A
2019-09-10T12:13:17.000Z,CO 5051113,Location updated,c8y_LocationUpdate,{"lng":14.325237,"alt":254.0,"time":"2019-09-10T12:13:17Z","error":13.0,"lat":48.2600698},N/A,N/A,N/A
2019-09-10T12:13:10.000Z,CO 5050666,Lifesign,cgmon_Lifesign,{"lng":14.5788998,"alt":25.0,"time":"2019-09-10T12:13:18Z","error":12.0,"lat":53.4233772},N/A,N/A,N/A
2019-09-10T12:13:07.000Z,CO 5051887,Location updated,c8y_LocationUpdate,{"lng":13.8064589,"alt":510.0,"time":"2019-09-10T12:13:07Z","error":10.0,"lat":46.5672814},N/A,N/A,N/A
2019-09-10T12:12:58.000Z,CO 5051131,Lifesign,cgmon_Lifesign,{"lng":11.4933341,"alt":581.0,"time":"2019-09-10T12:08:43Z","error":13.0,"lat":47.2738262},N/A,N/A,N/A …
Run Code Online (Sandbox Code Playgroud)

python csv json pandas

8
推荐指数
2
解决办法
2万
查看次数

用管道中的文件名sed

在一个文件夹,我有一个文件名中的几个参数,例如(只是一个参数)许多文件file_a1.0.txt,file_a1.2.txt等等.
这些都是由C++代码生成,我需要把生成的最后一个(时间).我不知道先验代码终止时该参数的值是什么.之后我需要复制最后一个文件的第二行.

要复制任何文件的第二行,我知道此sed命令有效:

sed -n 2p filename
Run Code Online (Sandbox Code Playgroud)

我也知道如何找到最后生成的文件:

ls -rtl file_a*.txt | tail -1
Run Code Online (Sandbox Code Playgroud)

题:

如何结合这两个操作?当然可以将第二个操作传递给该sed操作,但我不知道如何将来自管道的文件名作为该sed命令的输入.

ls sed pipe

6
推荐指数
1
解决办法
9735
查看次数

熊猫:数列中的海洋计数图

我有一个带有几个分类列的数据框。我知道该怎么做常规绘制一列的计数图。问:如何在一个图中绘制所有列的最大计数?

这是一个示例性数据框,用于阐明问题:

import pandas as pd
import numpy as np
import seaborn as sns

testdf=pd.DataFrame(({   'Ahome' :   pd.Categorical(["home"]*10),
                         'Bsearch' : pd.Categorical(["search"]*8 + ["NO"]*2),
                          'Cbuy' : pd.Categorical(["buy"]*5 + ["NO"]*5),
                          'Dcheck' : pd.Categorical(["check"]*3 + ["NO"]*7),


                     } ))
testdf.head(10)
sns.countplot(data=testdf,x='Bsearch');
Run Code Online (Sandbox Code Playgroud)

最后一行只是对一列使用普通计数图。我想在x轴上输入列类别(房屋,搜索,购买和支票),并在y轴上显示其频率。

提前致谢!

python pandas seaborn

4
推荐指数
1
解决办法
2265
查看次数

如何在绘图标题中打印数据框名称?

我有一个函数,它获取一个数据框和一列,经过一些过程,绘制该列,如下行所示:

def plot_dist(df,col):
    ax=sns.countplot(x=col,data=df)
Run Code Online (Sandbox Code Playgroud)

当我对几个数据帧重复这个函数时,我想在图的标题中有数据帧名称,就像这样:“数据帧 df 中 col 的分布”

plt.title('Distribution of '+ col + 'in dataframe' + df.name );
Run Code Online (Sandbox Code Playgroud)

问:如何获取数据框名称?根据here,可以写df.name='DFNAME',然后通过df.name得到字符串。但是然后必须定义名称,我不确定它是否在循环中工作。谢谢!

python dataframe pandas

2
推荐指数
1
解决办法
5535
查看次数

标签 统计

python ×4

pandas ×3

csv ×1

dataframe ×1

json ×1

ls ×1

matplotlib ×1

path ×1

pipe ×1

save ×1

seaborn ×1

sed ×1