我有一个pandas数据框,用于保存.wav
数据的文件路径。我可以使用pandas DataFrame.plot()
函数绘制引用的数据吗?
示例:
典型用法:
df.plot()
我正在尝试做什么:
df.plot(df.path_to_data)
...
我怀疑apply
和lambda
的某些组合可以解决问题,但我对这些工具并不是很熟悉。
答案 0 :(得分:1)
不,那是不可能的。 plot
是对pd.DataFrame
个对象进行操作的一阶函数。在这里,df
将是同一件事。您需要做的是
pd.read_*
加载您的数据框(通常为pd.read_csv(file)
)并分配给df
df.plot
因此,总而言之,您需要 -
df = pd.read_csv(filename)
... # some processing here (if needed)
df.plot()
关于是否可以这样做的问题"没有在内存中加载数据" ...你不能绘制内存中不存在的数据。如果您愿意,可以limit tha number of rows you read或loading it in chunks高效加载。{3}}。您还可以将代码编写到aggregate/summarise data或sample it。
答案 1 :(得分:1)
我认为您需要先read_csv
然后DataFrame.plot
创建DataFrame
:
pd.read_csv('path_to_data').plot()
但是,如果需要从DataFrame
中的path
列DataFrame
创建df.path_to_data.apply(lambda x: pd.read_csv(x).plot())
:{/ 1}}
def f(x):
pd.read_csv(x).plot()
df.path_to_data.apply(f)
或使用自定义功能:
for x in df.path_to_data:
pd.read_csv(x).plot()
或使用循环:
function post(){
unirest.post('https://power.ivyiot.com/Thingworx/Things/GamaNetworkServices/Services/GetNetworkData')
.headers({'Accept': 'application/json', 'appKey': 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'})
.end(function (response) {
setInterval(writeToCsv(response.body.rows),60000);
});
}
function writeToCsv(outCSV){
var k = 0;
return function(){
if(k > outCsv.length){
// TODO: stop interval, since no more rows to consume
}
var items = [[outCSV[k].PowerPlant , outCSV[k].gen1min , outCSV[k].gen1minDateTime, timeConverter(outCSV[k].gen1minDateTime)]];
for (index = 0; index < items.length; ++index) {
csv.push(items[index].join(', ') + '\n');
}
fs.writeFile(outFilename, csv, function (err) {
if (err) {
return console.log(err);
}
console.log("Added one row!")
});
k++;
}
}
function timeConverter(UNIX_timestamp){
var a = new Date(UNIX_timestamp*1000);
var hour = a.getUTCHours();
var min = a.getUTCMinutes();
var sec = a.getUTCSeconds();
var time = hour+':'+min+':'+sec ;
return time;
}
post();