我试图将x轴和y轴标签以及标题放在我通过Pandas创建的三面板直方图上,但似乎无法正确放置.我在标题中得到的唯一结果和三个图中最后一个的x轴标签.我想要一个整体标题,xlabel和ylabel.制作情节的代码如下.有什么建议?
df1.hist(column='human_den',by='region',sharex=True,sharey=True,layout=(1,3))
Run Code Online (Sandbox Code Playgroud) 我是Python用户,但在使用熊猫方面是新手.我希望更多地使用它,因为我正在处理大量的时间序列,并且我听说用熊猫修改它们要容易得多.我已经阅读了一些教程,但它们还没有意义.希望你能帮我一个例子.
我有一个包含四列的文本文件:年,月,日和雪深.这是1979年至2009年30年的每日数据.我想用熊猫技术计算360(30个月X 12个月)个月月平均值(即分离1979年1月,1979年2月,2009年12月和平均每个的所有值).有人可以帮我解决一些示例代码吗?
谢谢.
1979 1 1 3
1979 1 2 3
1979 1 3 3
1979 1 4 3
1979 1 5 3
1979 1 6 3
1979 1 7 4
1979 1 8 5
1979 1 9 7
1979 1 10 8
1979 1 11 16
1979 1 12 16
1979 1 13 16
1979 1 14 18
1979 1 15 18
1979 1 16 18
1979 1 17 18
1979 1 18 20
1979 1 19 20 …Run Code Online (Sandbox Code Playgroud) 我已经分析了一个每小时3小时的温度数据的时间序列,并发现了使用傅里叶分析的功率谱。
data = np.genfromtxt('H:/RData/3hr_obs.txt',
skip_header=3)
step = data[:,0]
t = data[:,1]
y = data[:,2]
freq = 0.125
yps = np.abs(np.fft.fft(y))**2
yfreqs = np.fft.fftfreq(y.size, freq)
y_idx = np.argsort(yfreqs)
fig = plt.figure(figsize=(14,10))
ax = fig.add_subplot(111)
ax.semilogy(yfreqs[y_idx],yps[y_idx])
ax.set_ylim(1e-3,1e8)
Run Code Online (Sandbox Code Playgroud)
频谱:
功率谱:
既然我知道信号在1和2频率处最强,我想创建一个滤波器(非棚车),该滤波器可以使数据平滑以保持那些主导频率。
是否有特定的numpy或scipy函数可以做到这一点?这将是必须在主软件包之外创建的东西吗?
我有 79 个纬度和经度,我有数据可以在 Python 中的底图上绘制。我有一个由 79 个数字组成的数组,我想绘制它而不是普通点(即我想要显示“1”或“2”而不是通常的点)。我尝试了该plt.annotate功能,但没有用。
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
locs = np.genfromtxt('/Volumes/NO_NAME/Classwork/OK_vic_grid.txt')
lat = locs[:,1] # 79 values
lon = locs[:,2] # 79 values
m = Basemap(projection='stere',lon_0=-95,lat_0=35.,lat_ts=40,\
llcrnrlat=33,urcrnrlat=38,\
llcrnrlon=-103.8,urcrnrlon=-94)
X,Y = m(lon,lat)
m.drawcoastlines()
m.drawstates()
m.drawcountries()
m.drawmapboundary(fill_color='lightblue')
m.drawparallels(np.arange(0.,40.,2.),color='gray',dashes=[1,3],labels=[1,0,0,0])
m.drawmeridians(np.arange(0.,360.,2.),color='gray',dashes=[1,3],labels=[0,0,0,1])
m.scatter(X,Y)
????? (Want to plot an array "maxpc" which has 79 numbers that I want to plot the string of)
Run Code Online (Sandbox Code Playgroud)
OK_vic_grid.txt:
1 33.75 -97.75
2 33.75 -97.25
3 33.75 -96.75 …Run Code Online (Sandbox Code Playgroud) 我正在对数据进行分箱并将其绘制在地图上,每个箱都有一个图例,但是每次经过循环时,我的图例中都会有一条线。我怎样才能在我的图例中为每个分箱类别获得一行?
注意:我有单独的 for 循环以确保较小的圆圈绘制在较大的圆圈之上。
sigcorrs = np.random.rand(100,1)
m = Basemap(llcrnrlon=35.,llcrnrlat=30.,urcrnrlon=-160.,urcrnrlat=63.,projection='lcc',resolution='c',lat_1=20.,lat_2=40.,lon_0=90.,lat_0=50.)
m.drawcountries()
m.drawmapboundary(fill_color='lightblue')
m.drawparallels(np.arange(0.,90.,5.),color='gray',dashes=[1,3],labels=[1,0,0,0])
m.drawmeridians(np.arange(0.,360.,15.),color='gray',dashes=[1,3],labels=[0,0,0,1])
m.fillcontinents(color='beige',lake_color='lightblue',zorder=0)
plt.title('Mean Absolute Error')
for a in range(len(clat)):
if sigcorrs[a] > 0.8:
X,Y = m(clon[a],clat[a])
m.scatter(X,Y,s=300,label='Corr > 0.8')
else:
continue
for a in range(len(clat)):
if sigcorrs[a] > 0.6 and sigcorrs[a] <= 0.8:
X,Y = m(clon[a],clat[a])
m.scatter(X,Y,s=200,label='Corr > 0.6')
else:
continue
for a in range(len(clat)):
if sigcorrs[a] > 0.4 and sigcorrs[a] <= 0.6:
X,Y = m(clon[a],clat[a])
m.scatter(X,Y,s=100,label='Corr > 0.4')
else:
continue
for a in range(len(clat)):
if sigcorrs[a] …Run Code Online (Sandbox Code Playgroud) 我有一个DataFrame,它的一部分看起来像这样:

我使用以下代码行读入文件:
df = pd.read_table(oname,skiprows=1,sep='\t',usecols=(3,4,5),names=['year','month','snow_depth'])
Run Code Online (Sandbox Code Playgroud)
当我调用df.isnull()时,如果默认情况下NaN应该为True,我会为每个单元格得到False,我相信.有没有人知道为什么这个没有被接受?
编辑:df.info()的结果
<class 'pandas.core.frame.DataFrame'>
Int64Index: 360 entries, 516 to 875
Data columns (total 3 columns):
year 360 non-null int64
month 360 non-null int64
snow_depth 360 non-null object
dtypes: int64(2), object(1)
memory usage: 11.2+ KB
Run Code Online (Sandbox Code Playgroud) 我正在读三个不同城市的数据,我想将每组数据保存在一个二维数组中,但是当我通过我的代码的一部分时,循环继续写我前两个城市的东西,因为我只有一维数组.我应该在哪里设置这些二维数组以保持我的文件有条理,我应该使用哪些函数和参数?
数组应为3X54(每个城市3个,每年数据54个)
编辑:下面代码中的所有初始变量(即,degra,tmin,tmax)在开始时将包含超过19,000个元素,我最终在每年的代码中对其进行平均.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
city = ['Lubbock.txt','Erie.txt','Oslo.txt']
years = np.arange(1960,2014,1)
months_summer = range(5,8,1)
for x in range(0,len(city),1):
data = np.genfromtxt(city[x], skip_header=2, usecols=(1), dtype=('S8'))
data2 = np.genfromtxt(city[x], skip_header=2, usecols=(2,3,4))
#ONLY GET 1-D ARRAY WHEN I ASK FOR SHAPE OF VARIABLE AFTER THIS POINT
dates = pd.DatetimeIndex(data[:])
year = dates.year
month = dates.month
day = dates.day
precip = data2[:,0]/10.
tmax = data2[:,1]/10.
tmin = data2[:,2]/10.
tmaxF = (tmax*(9./5.))+32.
tminF = (tmin*(9./5.))+32. …Run Code Online (Sandbox Code Playgroud)