鉴于此处提供的形状文件:我想在地图中标记每个多边形(县).这可能与GeoPandas有关吗?
import geopandas as gpd
import matplotlib.pyplot as plt
%matplotlib inline
shpfile=<Path to unzipped .shp file referenced and linked above>
c=gpd.read_file(shpfile)
c=c.loc[c['GEOID'].isin(['26161','26093','26049','26091','26075','26125','26163','26099','26115','26065'])]
c.plot()
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我在pandas这里感觉到一些奇怪的行为.我有一个看起来像的数据框
df = pd.DataFrame(columns=['Col 1', 'Col 2', 'Col 3'],
index=[('1', 'a'), ('2', 'a'), ('1', 'b'), ('2', 'b')])
In [14]: df
Out[14]:
Col 1 Col 2 Col 3
(1, a) NaN NaN NaN
(2, a) NaN NaN NaN
(1, b) NaN NaN NaN
(2, b) NaN NaN NaN
Run Code Online (Sandbox Code Playgroud)
我可以设置任意元素的值
In [15]: df['Col 2'].loc[('1', 'b')] = 6
In [16]: df
Out[16]:
Col 1 Col 2 Col 3
(1, a) NaN NaN NaN
(2, a) NaN NaN NaN
(1, b) NaN …Run Code Online (Sandbox Code Playgroud) 我收到了一个优化警告:
OptimizeWarning: Covariance of the parameters could not be estimated
category=OptimizeWarning)
Run Code Online (Sandbox Code Playgroud)
当我试图使用我的分段函数来适应我的数据scipy.optimize.curve_fit.意思是没有适合发生.我可以轻松地将抛物线拟合到我的数据中,并且我正在提供curve_fit我认为良好的初始参数.下面的完整代码示例.有谁知道为什么curve_fit可能不相处np.piecewise?还是我犯了一个不同的错误?
import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
def piecewise_linear(x, x0, y0, k1, k2):
y = np.piecewise(x, [x < x0, x >= x0],
[lambda x:k1*x + y0-k1*x0, lambda x:k2*x + y0-k2*x0])
return y
def parabola(x, a, b):
y = a * x**2 + b
return y
x = np.array([-3, -2, -1, 0, 1, 2, 3])
y …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法,使用numpy trapz或scipy堆栈中的类似函数对采样数据进行双重积分.
特别是,我想计算功能:
其中f(x',y')是采样数组,F(x, y)是一个相同维度的数组.
这是我的尝试,结果不正确:
def integrate_2D(f, x, y):
def integral(f, x, y, x0, y0):
F_i = np.trapz(np.trapz(np.arcsinh(1/np.sqrt((x-x0+0.01)**2+(y-y0+0.01)**2)) * f, x), y)
return F_i
sigma = 1.0
F = [[integral(f, x, y, x0, y0) for x0 in x] for y0 in y]
return F
xlin = np.linspace(0, 10, 100)
ylin = np.linspace(0, 10, 100)
X,Y = np.meshgrid(xlin, ylin)
f = 1.0 * np.exp(-((X - 8.)**2 + (Y - 8)**2)/(8.0))
f += 0.5 * np.exp(-((X - …Run Code Online (Sandbox Code Playgroud) 在性能方面,以下代码片段在mayavi.
import numpy as np
from mayavi import mlab
n = 5000
x = np.random.rand(n)
y = np.random.rand(n)
z = np.random.rand(n)
s = np.sin(x)**2 + np.cos(y)
mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02, scale_mode='none')
Run Code Online (Sandbox Code Playgroud)
而是mayavi开始噎住了n >= 10000。matplotlib, ( Axes3D.scatter) 中类似的 3d 绘图例程同样难以处理这种大小的数据集(为什么我首先开始研究mayavi)。
首先,在mayavi(琐碎的或非平凡的)中是否有一些我遗漏的东西会使 10,000 多个点散点图更容易渲染?
其次,如果上面的答案是否定的,那么mayavi我还需要哪些其他选项(在python 包中或不同的 python 包中)来绘制这种量级的数据集?
我标记 ParaView 只是为了添加在 ParaView 中渲染我的数据非常顺利,这让我相信我并没有试图做任何不合理的事情。
更新:
将模式指定为 2D 字形对加快速度大有帮助。例如
mlab.points3d(x, y, z, s, colormap="RdYlBu", scale_factor=0.02,
scale_mode='none', mode='2dcross') …Run Code Online (Sandbox Code Playgroud) 我想修复下面条形图中 2012 年和 2013 年之间的差距。
我的数据框是
In [30]: df
Out[30]:
Pre-Release Post-Release
FinishDate
2008 1.0 0.0
2009 18.0 0.0
2010 96.0 0.0
2011 161.0 0.0
2012 157.0 0.0
2013 0.0 139.0
2014 0.0 155.0
2015 0.0 150.0
2016 0.0 91.0
2017 0.0 15.0
Run Code Online (Sandbox Code Playgroud)
我用来df.plot(kind='bar', width=1)绘图。
我有一个pandas read_csv的问题.我有很多与股票市场相关联的txt文件.它是这样的:
SecCode,SecName,Tdate,Ttime,LastClose,OP,CP,Tq,Tm,Tt,Cq,Cm,Ct,HiP,LoP,SYL1,SYL2,Rf1,Rf2,bs,s5,s4,s3,s2,s1,b1,b2,b3,b4,b5,sv5,sv4,sv3,sv2,sv1,bv1,bv2,bv3,bv4,bv5,bsratio,spd,rpd,depth1,depth2
600000,????,20120104,091501,8.490,.000,.000,0,.000,0,0,.000,0,.000,.000,.000,.000,.000,.000, ,.000,.000,.000,.000,8.600,8.600,.000,.000,.000,.000,0,0,0,0,1100,1100,38900,0,0,0,.00,.000,.00,.00,.00
600000,????,20120104,091506,8.490,.000,.000,0,.000,0,0,.000,0,.000,.000,.000,.000,.000,.000, ,.000,.000,.000,.000,8.520,8.520,.000,.000,.000,.000,0,0,0,0,56795,56795,33605,0,0,0,.00,.000,.00,.00,.00
600000,????,20120104,091511,8.490,.000,.000,0,.000,0,0,.000,0,.000,.000,.000,.000,.000,.000, ,.000,.000,.000,.000,8.520,8.520,.000,.000,.000,.000,0,0,0,0,56795,56795,34605,0,0,0,.00,.000,.00,.00,.00
600000,????,20120104,091551,8.490,.000,.000,0,.000,0,0,.000,0,.000,.000,.000,.000,.000,.000, ,.000,.000,.000,.000,8.520,8.520,.000,.000,.000,.000,0,0,0,0,56795,56795,35205,0,0,0,.00,.000,.00,.00,.00
600000,????,20120104,091621,8.490,.000,.000,0,.000,0,0,.000,0,.000,.000,.000,.000,.000,.000, ,.000,.000,.000,.000,8.520,8.520,.000,.000,.000,.000,0,0,0,0,57795,57795,34205,0,0,0,.00,.000,.00,.00,.00
Run Code Online (Sandbox Code Playgroud)
我用这段代码来读它:
fields = ['SecCode', 'Tdate','Ttime','LastClose','OP','CP','Rf1','Rf2']
df = pd.read_csv('SHL1_TAQ_600000_201201.txt',usecols=fields)
Run Code Online (Sandbox Code Playgroud)
但是我遇到了一个问题:
Traceback (most recent call last):
File "E:/workspace/Senti/highlevel/highlevel.py", line 8, in <module>
df = pd.read_csv('SHL1_TAQ_600000_201201.txt',usecols=fields,header=1)
File "D:\Anaconda2\lib\site-packages\pandas\io\parsers.py", line 562, in parser_f
return _read(filepath_or_buffer, kwds)
File "D:\Anaconda2\lib\site-packages\pandas\io\parsers.py", line 315, in _read
parser = TextFileReader(filepath_or_buffer, **kwds)
File "D:\Anaconda2\lib\site-packages\pandas\io\parsers.py", line 645, in __init__
self._make_engine(self.engine)
File "D:\Anaconda2\lib\site-packages\pandas\io\parsers.py", line 799, in _make_engine
self._engine = CParserWrapper(self.f, **self.options)
File "D:\Anaconda2\lib\site-packages\pandas\io\parsers.py", line 1257, in __init__
raise ValueError("Usecols …Run Code Online (Sandbox Code Playgroud) 给定一个零的numpy数组,说
arr = np.zeros((5, 5))
Run Code Online (Sandbox Code Playgroud)
以及代表多边形顶点的索引数组,例如
verts = np.array([[0, 2], [2, 0], [2, 4]])
Run Code Online (Sandbox Code Playgroud)
1)什么是优雅的做事方式
for v in verts:
arr[v[0], v[1]] = 1
Run Code Online (Sandbox Code Playgroud)
这样结果数组是
In [108]: arr
Out[108]:
array([[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 0., 0.],
[ 1., 0., 0., 0., 1.],
[ 0., 0., 0., 0., 0.],
[ 0., 0., 0., 0., 0.]])
Run Code Online (Sandbox Code Playgroud)
2)我如何用一个数组填充,以便输出数组是
In [158]: arr
Out[158]:
array([[ 0., 0., 1., 0., 0.],
[ 0., 1., 1., 1., 0.],
[ 1., 1., 1., 1., …Run Code Online (Sandbox Code Playgroud) 当在中绘制烛台图时matplotlib,该图会在周末留下难看的间隙。发生这种情况是由于周末市场关闭导致数据中断。周末的差距如何消除?
下面是一个简单的示例,说明图中存在间隙。
import matplotlib.pyplot as plt
from matplotlib.finance import quotes_historical_yahoo_ohlc, candlestick_ohlc
date1, date2 = [(2006, 6, 1), (2006, 8, 1)]
quotes_mpl = quotes_historical_yahoo_ohlc('INTC', date1, date2)
fig, ax = plt.subplots()
candlestick_ohlc(ax, quotes_mpl)
ax.xaxis_date()
plt.xticks(rotation=45)
Run Code Online (Sandbox Code Playgroud)
周末差距由绿色箭头显示。