小编Mat*_*ijn的帖子

重命名Pandas DataFrame索引

我有一个没有标题的csv文件,带有DateTime索引.我想重命名索引和列名,但是使用df.rename()只重命名列名.错误?我的版本是0.12.0

In [2]: df = pd.read_csv(r'D:\Data\DataTimeSeries_csv//seriesSM.csv', header=None, parse_dates=[[0]], index_col=[0] )

In [3]: df.head()
Out[3]: 
                   1
0                   
2002-06-18  0.112000
2002-06-22  0.190333
2002-06-26  0.134000
2002-06-30  0.093000
2002-07-04  0.098667

In [4]: df.rename(index={0:'Date'}, columns={1:'SM'}, inplace=True)

In [5]: df.head()
Out[5]: 
                  SM
0                   
2002-06-18  0.112000
2002-06-22  0.190333
2002-06-26  0.134000
2002-06-30  0.093000
2002-07-04  0.098667
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

115
推荐指数
6
解决办法
26万
查看次数

使用matplotlib删除或调整图例框架的边框

使用matplotlib绘制绘图时:

  1. 如何删除图例框?
  2. 如何更改图例框边框的颜色?
  3. 如何仅删除图例框的边框?

python matplotlib

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

使用Pandas使用Series创建DataFrame,导致内存错误

我正在使用Pandas库进行遥感时间序列分析.最后我想通过使用chunk-sized将我的DataFrame保存到csv,但我遇到了一个小问题.我的代码生成了6个NumPy数组,我将其转换为Pandas系列.这些系列中的每一个都包含很多项目

>>> prcpSeries.shape
(12626172,)
Run Code Online (Sandbox Code Playgroud)

我想将系列添加到Pandas DataFrame(df)中,这样我就可以通过chunk将它们保存到csv文件中.

d = {'prcp': pd.Series(prcpSeries),
     'tmax': pd.Series(tmaxSeries),
     'tmin': pd.Series(tminSeries),
     'ndvi': pd.Series(ndviSeries),
     'lstm': pd.Series(lstmSeries),
     'evtm': pd.Series(evtmSeries)}

df = pd.DataFrame(d)
outFile ='F:/data/output/run1/_'+str(i)+'.out'
df.to_csv(outFile, header = False, chunksize = 1000)
d = None
df = None
Run Code Online (Sandbox Code Playgroud)

但是我的代码卡在下面一行给出内存错误

df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)

有什么建议?是否可以按块填充Pandas DataFrame块?

python numpy pandas

19
推荐指数
1
解决办法
7万
查看次数

使用matplotlib Basemap绘制GDAL栅格

我想使用matplotlib Basemap 绘制光栅tiff (下载 -723Kb).我的栅格投影坐标以米为单位:

In  [2]:
path = r'albers_5km.tif'
raster = gdal.Open(path, gdal.GA_ReadOnly)
array = raster.GetRasterBand(20).ReadAsArray()

print ('Raster Projection:\n', raster.GetProjection())
print ('Raster GeoTransform:\n', raster.GetGeoTransform())

Out [2]:
Raster Projection:
 PROJCS["unnamed",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433],AUTHORITY["EPSG","4326"]],PROJECTION["Albers_Conic_Equal_Area"],PARAMETER["standard_parallel_1",15],PARAMETER["standard_parallel_2",65],PARAMETER["latitude_of_center",30],PARAMETER["longitude_of_center",95],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]]]
Raster GeoTransform:
 (190425.8243, 5000.0, 0.0, 1500257.0112, 0.0, -5000.0)
Run Code Online (Sandbox Code Playgroud)

如果我试图用这个用罗宾投影绘制contourflatlon=False比X和Y被认为是地图投影坐标(见文档,我想这就是我).

但如果我看一下情节,我会注意到它的左下角非常小:

左下方

使用此代码:

In  [3]:
xy = raster.GetGeoTransform() 
x = raster.RasterXSize 
y = raster.RasterYSize    
lon_start = xy[0] 
lon_stop = x*xy[1]+xy[0] 
lon_step = xy[1]    
lat_start = xy[3] 
lat_stop = y*xy[5]+xy[3] 
lat_step = xy[5] …
Run Code Online (Sandbox Code Playgroud)

python matplotlib gdal matplotlib-basemap

15
推荐指数
1
解决办法
9946
查看次数

如何将两个PostgreSQL列聚合到由括号分隔的数组中

我想使用group-by查询连接两列,从而产生一个用括号分隔的数组.我知道这个问题与这个问题有关,但像往常一样,我的用例有点不同.

一个简单的例子(也作为SQL Fiddle).目前我的查询返回以下内容:

ID  X   Y
3   0.5 2.71
3   1.0 2.50
3   1.5 2.33
6   0.5 2.73
6   1.5 2.77
Run Code Online (Sandbox Code Playgroud)

但是我希望连接/聚合X/ Y列以获得以下内容:

ID  XY
3   [[0.5,2.71],[1.0,2.50],[1.5,2.33]]
6   [[0.5,2.73],[1.5,2.77]]
Run Code Online (Sandbox Code Playgroud)

目前我已经尝试将列连接成一个如下:

SELECT "ID",concat_ws(', ',"X", "Y") as XY FROM Table1;
Run Code Online (Sandbox Code Playgroud)

哪个回报:

ID  xy
3   0.5, 2.71
3   1, 2.50
3   1.5, 2.33
6   0.5, 2.73
Run Code Online (Sandbox Code Playgroud)

用过array_agg():

SELECT "ID",array_to_string(array_agg("X"),',') AS XY
FROM Table1
GROUP BY "ID";
Run Code Online (Sandbox Code Playgroud)

导致:

ID  xy
3   0.5,1,1.5
6   0.5
Run Code Online (Sandbox Code Playgroud)

我觉得我越来越近了,但是我会非常感激.

sql arrays postgresql concatenation array-agg

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

如何使用交叉谱密度来计算两个相关信号的相移

我有两个信号,我希望其中一个响应另一个,但是有一定的相移.

现在我想计算相干性或归一化的交叉谱密度,以估计输入和输出之间是否存在任何因果关系,以找出这种相干性出现在哪个频率上.

例如,参见此图像(来自此处),它在频率10处似乎具有高相干性: 在此输入图像描述

现在我知道我可以使用互相关来计算两个信号的相移,但是如何使用相干性(频率为10)来计算相移?

图像代码:

"""
Compute the coherence of two signals
"""
import numpy as np
import matplotlib.pyplot as plt

# make a little extra space between the subplots
plt.subplots_adjust(wspace=0.5)

nfft = 256
dt = 0.01
t = np.arange(0, 30, dt)
nse1 = np.random.randn(len(t))                 # white noise 1
nse2 = np.random.randn(len(t))                 # white noise 2
r = np.exp(-t/0.05)

cnse1 = np.convolve(nse1, r, mode='same')*dt   # colored noise 1
cnse2 = np.convolve(nse2, r, mode='same')*dt   # colored noise 2

# …
Run Code Online (Sandbox Code Playgroud)

python signal-processing matplotlib spectral-density cross-correlation

9
推荐指数
3
解决办法
1万
查看次数

如何切割numpy数组以获取第一行和最后两行

据我所知,它没有在索引,切片和迭代 scipy教程中介绍,所以让我在这里问一下:

说我

x = np.array([[1,2],[3,4],[5,6],[7,8],[9,0]])
x: array([[1, 2],
          [3, 4],
          [5, 6],
          [7, 8],
          [9, 0]])
Run Code Online (Sandbox Code Playgroud)

如何切割数组以获取第一行和最后一行:

y: array([[1, 2],
          [3, 4],              
          [7, 8],
          [9, 0]])
Run Code Online (Sandbox Code Playgroud)

python numpy

8
推荐指数
1
解决办法
8108
查看次数

关闭运行代码的IPython Notebook

这个怎么运作?我在IPython Notebook中运行了一些代码.一些迭代的工作.

不小心我用正在运行的Notebook关闭了浏览器,但是回到IPython Dashboard我看到这个特定的笔记本没有关机,所以如果我再次打开笔记本,我看到我的代码前面的[*]它正在执行.

我甚至可以听到我的电脑仍在运行代码,但它并没有返回任何打印语句的新输出.

我可以等待并最终继续输出,或者我的PC仍将运行我的代码,但它将不再可访问?

python ipython-notebook

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

如何使用cartopy添加自定义shapefile以进行映射

使用底图我用来添加我的自定义边界shapefile,如下所示:

map = Basemap(..)
map.readshapefile(file.shp, 'attribute', drawbounds=True)
Run Code Online (Sandbox Code Playgroud)

我怎样才能使用cartopy做同样的事情?

我试过这个:

ax.add_feature(cfeature.shapereader.Polygon('file.shp'))
Run Code Online (Sandbox Code Playgroud)

但那不起作用..

cartopy

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

NumPy Einsum的黑巫毒教

我使用einsum函数获得了一些工作代码.但是因为einsum目前仍然black voodoo适合我.我想知道,这段代码实际上是做什么的,如果它可以以某种方式使用优化np.dot

我的数据看起来像这样

n, p, q = 40000, 8, 4
a = np.random.rand(n, p, q)
b = np.random.rand(n, p)
Run Code Online (Sandbox Code Playgroud)

我现有的函数einsum函数看起来像这样

f1 = np.einsum("ijx,ijy->ixy", a, a)
f2 = np.einsum("ijx,ij->ix", a, b)
Run Code Online (Sandbox Code Playgroud)

但它真正做到了什么?直到这里:每个尺寸(轴)由标签表示,i等于第一个轴n,j第二个轴p,x并且y是同一轴的不同标签q.因此输出数组的顺序f1ixy,因此输出形状是40000,4,4 (n,q,q)

但就我而言.和

python numpy

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