我在Python中有以下数据框(实际的数据框要大得多,只是提供一个小样本):
A B C D E F
0 0.43 0.52 0.96 1.17 1.17 2.85
1 0.43 0.52 1.17 2.72 2.75 2.94
2 0.43 0.53 1.48 2.85 2.83
3 0.47 0.59 1.58 3.14
4 0.49 0.80
Run Code Online (Sandbox Code Playgroud)
我使用df.values将数据帧转换为numpy,然后将其传递给boxplot.
当我尝试从这个pandas数据帧中创建一个boxplot时,从每列中选取的值的数量被限制为列中的最小值(在本例中为F列).有什么方法可以从每一列中包装出所有值吗?
注意:我使用df.dropna删除每列中缺少值的行.但是,这会将数据帧的大小调整为列长度的最小公分母,并且会使绘图变得混乱.
import prettyplotlib as ppl
import numpy as np
import pandas
import matplotlib as mpl
from matplotlib import pyplot
df = pandas.DataFrame.from_csv(csv_data,index_col=False)
df = df.dropna()
labels = ['A', 'B', 'C', 'D', 'E', 'F']
fig, ax = pyplot.subplots()
ppl.boxplot(ax, df.values, xticklabels=labels)
pyplot.show()
Run Code Online (Sandbox Code Playgroud) 如何对pandas groupby操作应用排序?下面的命令返回一个错误,指出'bool'对象不可调用
import pandas as pd
df.groupby('cokey').sort('A')
cokey A B
11168155 18 56
11168155 0 18
11168155 56 96
11168156 96 152
11168156 0 96
Run Code Online (Sandbox Code Playgroud) 我想减少下面箱子图中框的宽度.这是我的代码,但它不起作用:
bp = plt.boxplot(boxes, widths = 0.6, patch_artist = True)
Run Code Online (Sandbox Code Playgroud)
我在Windows机器上运行的项目有3个.py文件.其中一个文件调用一个只有32位的库.其他2个.py文件具有32位和64位兼容的库.它们看起来像这样:
fileA.py
-- calls fileB.py (library is only 32 bit compatible)
-- also calls function in fileC.py (libraries are both 32 and 64 bit compatible)
Run Code Online (Sandbox Code Playgroud)
现在,我遇到了fileC.py中的内存错误,如果我可以使用64位版本的python,可以解决这个问题.但是,如果我这样做,我在执行fileB.py时会遇到错误,因为它有一个32位的库,它与64位python(32位库是ArcPy)不能很好地对话.存储器错误的库是pandas,因为大熊猫无法读取32位系统的大于2GB的数据帧,所以会发生内存错误.
有没有办法我可以使用32位解释器为fileB.py和64位为fileC.py.请记住,这两个都是从fileA.py调用的.
我正在尝试在 python 2.7 安装上将我的 rasterio 版本从 0.25 更新到 0.32,但运行起来遇到了麻烦。问题。有关如何修复它的任何信息吗?
Running setup.py clean for rasterio
Failed to build rasterio
Installing collected packages: rasterio
Found existing installation: rasterio 0.25.0
Uninstalling rasterio-0.25.0:
Successfully uninstalled rasterio-0.25.0
Running setup.py install for rasterio: started
Running setup.py install for rasterio: finished with status 'error'
Complete output from command C:\Anaconda64\python.exe -u -c "import setuptools, tokenize;__file__='c:\\users\\rit\\appdata\\local\\temp\\pip-build-dvzvvz\\rasterio\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record c:\users\rit\appdata\local\temp\pip-4qousd-record\install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build\lib.win-amd64-2.7
creating build\lib.win-amd64-2.7\rasterio
copying …Run Code Online (Sandbox Code Playgroud) 我想将数据框中的所有数字列转换为它们的绝对值,并且正在执行以下操作:
df = df.abs()
Run Code Online (Sandbox Code Playgroud)
但是,它给出了错误:
*** TypeError: bad operand type for abs(): 'unicode'
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?我真的不想手动指定列名
我有多个 python 项目,每个项目都有一个实用程序文件,它们都具有相同的功能。
如何设置某种可以导入到所有本地项目的本地 python 库?我知道 Rodeo 有一些功能,你可以用它来指定一些函数/文件在多个 python 项目中可用。有没有办法在牛仔竞技之外做到这一点?
我不想创建一个可以通过 pip 使用的库(因为这意味着将它暴露给所有人)
有没有办法缓存python文件句柄?我有一个函数,它将netCDF文件路径作为输入,打开它,从netCDF文件中提取一些数据并关闭它.它被调用了很多次,每次打开文件的开销很高.
如何通过缓存文件句柄来加快速度?也许有一个python库可以做到这一点
df_masked.loc[:, col] = df_masked.groupby([df_masked.index.month, df_masked.index.day])[col].\
transform(lambda y: y.fillna(y.median()))
Run Code Online (Sandbox Code Playgroud)
即使在使用.loc之后,我也会得到这个.错误,我该如何解决?
Anaconda\lib\site-packages\pandas\core\indexing.py:476: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self.obj[item] = s
Run Code Online (Sandbox Code Playgroud) 以下是生成地图的一些示例底图代码:
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8, 4.5))
plt.subplots_adjust(left=0.02, right=0.98, top=0.98, bottom=0.00)
m = Basemap(projection='robin',lon_0=0,resolution='c')
m.fillcontinents(color='gray',lake_color='white')
m.drawcoastlines()
plt.savefig('world.png',dpi=75)
Run Code Online (Sandbox Code Playgroud)