我有一个python代码来创建一个数字.在展示之后plt.show(),我想保存这个数字.
为了避免弄乱纵横比,分辨率等,我不想savefig在代码中使用-command.相反,我想使用图窗口中的"保存图"按钮.
但是,默认情况下,它会提示我的主文件夹作为保存位置.我希望save能自动存在于执行代码的目录中.
如何/在哪里可以更改此窗口默认路径以保存到当前文件夹(或其他位置)?
我在开始时尝试将此命令从 Change目录更改为Python脚本的目录,但它没有帮助,即使正确提供了文件名:
os.chdir(os.path.dirname(__file__))
Run Code Online (Sandbox Code Playgroud) 我正在尝试读取包含 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.csvZeit,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) 在一个文件夹,我有一个文件名中的几个参数,例如(只是一个参数)许多文件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命令的输入.
我有一个带有几个分类列的数据框。我知道该怎么做常规绘制一列的计数图。问:如何在一个图中绘制所有列的最大计数?
这是一个示例性数据框,用于阐明问题:
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轴上显示其频率。
提前致谢!
我有一个函数,它获取一个数据框和一列,经过一些过程,绘制该列,如下行所示:
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得到字符串。但是然后必须定义名称,我不确定它是否在循环中工作。谢谢!