小编DJV*_*DJV的帖子

熊猫直方图标签和标题

我试图将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 histogram pandas

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

使用Python Pandas每日平均使用每日数据

我是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)

python time-series pandas

5
推荐指数
1
解决办法
8570
查看次数

Python:在傅立叶分析之后设计时间序列过滤器

我已经分析了一个每小时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函数可以做到这一点?这将是必须在主软件包之外创建的东西吗?

python filtering numpy fft scipy

5
推荐指数
1
解决办法
2188
查看次数

在 Basemap 上绘制文本字符串代替 Python 中的点

我有 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)

python plot matplotlib-basemap

4
推荐指数
1
解决办法
4794
查看次数

For 循环中的 Matplotlib 图例

我正在对数据进行分箱并将其绘制在地图上,每个箱都有一个图例,但是每次经过循环时,我的图例中都会有一条线。我怎样才能在我的图例中为每个分箱类别获得一行?

注意:我有单独的 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)

python matplotlib legend

4
推荐指数
1
解决办法
4903
查看次数

熊猫没有认识到NaN为空

我有一个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)

python null pandas

2
推荐指数
1
解决办法
3237
查看次数

Python中的二维数组

我正在读三个不同城市的数据,我想将每组数据保存在一个二维数组中,但是当我通过我的代码的一部分时,循环继续写我前两个城市的东西,因为我只有一维数组.我应该在哪里设置这些二维数组以保持我的文件有条理,我应该使用哪些函数和参数?

数组应为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)

python arrays

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