小编Lui*_*uel的帖子

读取excel文件时的Pandas数据帧和字符编码

我正在阅读一个包含多个数字和分类数据的excel文件.name_string列包含外语字符.当我尝试查看name_string列的内容时,我得到了我想要的结果,但外部字符(在Excel电子表格中正确显示)显示的编码错误.这是我有的:

import pandas as pd
df = pd.read_excel('MC_simulation.xlsx', 'DataSet', encoding='utf-8')
name_string = df.name_string.unique()
name_string.sort()
name_string
Run Code Online (Sandbox Code Playgroud)

产生以下内容:

array([u'4th of July', u'911', u'Abab', u'Abass', u'Abcar', u'Abced',
       u'Ceded', u'Cedes', u'Cedfus', u'Ceding', u'Cedtim', u'Cedtol',
       u'Cedxer', u'Chevrolet Corvette', u'Chuck Norris',
       u'Cristina Fern\xe1ndez de Kirchner'], dtype=object)
Run Code Online (Sandbox Code Playgroud)

在最后一行,正确编码的名称应该是CristinaFernándezdeKirchner.有人可以帮我解决这个问题吗?

python excel character-encoding pandas

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

"continuous_scale中的错误"和"继承中的错误"ggplot2&R 2.14.2

我正在阅读Drew Conway和John White的" 黑客机器学习 "一书中的教程,我遇到了绘制直方图的问题.示例代码在此处运行绘图部分:

> quick.hist <- ggplot(ufo.us, aes(x = DateOccurred)) +
+   geom_histogram() + 
+   scale_x_date(major = "50 years")
Run Code Online (Sandbox Code Playgroud)

产生

Error in continuous_scale(aesthetics, "date", identity, breaks = breaks,  : unused argument(s) (major = "50 years")
Run Code Online (Sandbox Code Playgroud)

> ggsave(plot = quick.hist,
+        filename = "C:\test.png",
+        height = 6,
+        width = 8)
Run Code Online (Sandbox Code Playgroud)

产生

Error in inherits(plot, "ggplot") : object 'quick.hist' not found
Run Code Online (Sandbox Code Playgroud)

我使用的是R版本2.14.2.和ggplot2库.在此先感谢您的帮助.


解决了

对我有用的快速解决方案是消除引用标签的每一行的'+ scale_x_date(major ="50 years")'部分.产生直方图的最终代码如下:

> quick.hist <- ggplot(ufo.us, aes(x = DateOccurred)) +
+   geom_histogram() …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

13
推荐指数
2
解决办法
3737
查看次数

Enthought Canopy中的Matplotlib字体

我在Canopy中使用matplotlib库,具体功能是xkcd().此功能使用特定字体绘制图表.字体是Comic Sans MS,如果不存在,应该下载.

/home/luis/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/font_manager.py:1236: UserWarning: findfont: Font family ['Humor Sans', 'Comic Sans MS'] not found. Falling back to Bitstream Vera Sans (prop.get_family(), self.defaultFamily[fontext]))
Run Code Online (Sandbox Code Playgroud)

我使用下面的小脚本,它检查字体的存在/不存在.如果不存在,则下载它.

import os
import urllib2
if not os.path.exists('Humor-Sans.ttf'):
    fhandle = urllib2.urlopen('http://antiyawn.com/uploads/Humor-Sans-1.0.ttf')
    open('Humor-Sans.ttf', 'wb').write(fhandle.read())
Run Code Online (Sandbox Code Playgroud)

问题是我仍然没有得到正确的字体来显示.如果字体缓存出现问题,我会执行以下操作:

luis@luis-VirtualBox:~$ rm /home/luis/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/fontList.cache
Run Code Online (Sandbox Code Playgroud)

获得以下内容:

rm: cannot remove ‘/home/luis/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/matplotlib/fontList.cache’: No such file or directory 
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

matplotlib ipython canopy

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

使用pandas和numpy来参数化堆栈溢出的用户数和声誉

我注意到Stack Overflow的用户数量及其声誉遵循有趣的分布.我创建了一个pandas DF,看看我是否可以创建一个参数拟合:

import pandas as pd
import numpy as np
soDF = pd.read_excel('scores.xls')
print soDF
Run Code Online (Sandbox Code Playgroud)

哪个返回:

    total_rep    users
0           1  4364226
1         200   269110
2         500   158824
3        1000    90368
4        2000    48609
5        3000    32604
6        5000    18921
7       10000     8618
8       25000     2802
9       50000     1000
10     100000      334
Run Code Online (Sandbox Code Playgroud)

如果我绘制图表,我会得到以下图表:

堆栈溢出用户和声誉

该分布似乎遵循幂律.因此,为了更好地可视化,我添加了以下内容:

soDF['log_total_rep'] = soDF['total_rep'].apply(np.log10)
soDF['log_users'] = soDF['users'].apply(np.log10)
soDF.plot(x='log_total_rep', y='log_users')
Run Code Online (Sandbox Code Playgroud)

其中产生了以下内容: Stack Overflow用户和声誉遵循幂律

有没有一种简单的方法可以使用pandas来找到最适合这些数据的方法?虽然拟合看起来是线性的,但也许多项式拟合更好,因为现在我处理的是对数尺度.

python numpy pandas

11
推荐指数
2
解决办法
536
查看次数

简单定制matplotlib/pandas条形图(标签,刻度等)

我是matplotlib的新手,我试图在熊猫中使用它来绘制一些简单的图表.我有一个DataFrame包含两个标签"score"和"person",派生自另一个DF.

df1 = DataFrame(df, columns=['score','person'])
Run Code Online (Sandbox Code Playgroud)

生成此输出:

表输出

我正在尝试创建一个简单的条形图,以不同颜色显示每个人,这就是我到目前为止:

df1.plot(kind='bar', title='Ranking')
Run Code Online (Sandbox Code Playgroud)

条形图

如何自定义它以使图表在x轴上显示具有独特颜色的人名并删除图周围的"框架"?如何将其设为水平条形图?

在此先感谢您的帮助.

python matplotlib pandas

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

iPython中Seaborn统计数据可视化中的默认字体

在尝试在Anaconda和Enthought for Mac中运行stanford.edu/~mwaskom/software/seaborn/的多个问题之后(很多依赖项和版本的问题),我能够从Ubuntu中的Enthought虚拟环境运行它(在VirtualBox上运行) .

在他们的一些教程之后,我重新创建了以下内容:

在此输入图像描述

但令我困扰的是,使用的字体不是为Seaborn设计的字体,而是最接近的字体.

有人有调整matplotlib中字体选择的经验吗?关于如何使用matplotlib的字体管理器的任何好教程?

python fonts matplotlib seaborn

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

在iPython笔记本中显示带有JS的HTML文件

我在iPython笔记本中有一段代码,它以编程方式生成一个名为'sound'的文件夹,其中包含以下文件:index.html,canvas.js,graph.js和style.css.

如果我在浏览器中打开index.html,我可以看到我想要的输出:一个带有漂亮的JS动画的图形,表示我正在建模的过程进出的向量.

网络可视化

但是,我想从iPython笔记本本身内部显示HTML文件.

为此,我输入以下代码:

from IPython.display import IFrame
IFrame('/Users/useird/Desktop/sound/index.html', width=700, height=350)
Run Code Online (Sandbox Code Playgroud)

返回以下内容: 404错误ipython笔记本

我不是css或js的专家,但我认为iPython可以在iframe中显示js,所以这里有什么问题?

谢谢

html javascript css canvas ipython-notebook

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

在同一行绘制2个seaborn KDE联合图

有没有办法并排绘制两个KDE联合图?我已经能够显示几乎所有类型的图形,seaborn可以使用这样的东西产生:

power_t_series = sDF.pitch
velocity_t_series = sDF.velocity
duration_t_series = sDF.duration

figure, axes = plt.subplots(nrows=1, ncols=2)
figure.set_size_inches(20,10)
b, g = sns.color_palette("muted", 2)

sns.tsplot(power_t_series, color = b, ax=axes[0])
sns.distplot(power_t_series, color = r, ax=axes[1])
Run Code Online (Sandbox Code Playgroud)

但是在指定jointplot时,自上而下是显示这种性质的多个图表的唯一方法吗?这是代码和错误:

figure, axes = plt.subplots(nrows=1, ncols=2)
figure.set_size_inches(20,10)
b, g = sns.color_palette("muted", 2)

sns.jointplot(power_t_series, velocity_t_series, kind='kde', ax=axes[0])
sns.jointplot(power_t_series, duration_t_series, kind='kde', ax=axes[1])
Run Code Online (Sandbox Code Playgroud)

我明白了:

      3 b, g = sns.color_palette("muted", 2)
      4 
----> 5 sns.jointplot(power_t_series, velocity_t_series, kind='kde', ax=axes[0])
      6 sns.jointplot(power_t_series, duration_t_series, kind='kde', ax=axes[1])

TypeError: jointplot() got an unexpected keyword argument 'ax' 
Run Code Online (Sandbox Code Playgroud)

有没有办法并排绘制这种类型的图表,因为ax不是jointplot()接受的参数?

python matplotlib seaborn

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

使用Python NLTK对大(> 70MB)TXT文件进行标记.连接和写入数据以传输错误

首先,我是python/nltk的新手,所以如果问题太基础,我很抱歉.我有一个大文件,我试图标记; 我得到了内存错误.

我读过的一个解决方案是一次读取一行文件,这是有道理的,然而,当这样做时,我得到了错误cannot concatenate 'str' and 'list' objects.我不确定为什么会显示错误,因为(在读取文件后,我检查它的类型,它实际上是一个字符串.

我试图将7MB文件分成4个较小的文件,当运行时,我得到: error: failed to write data to stream.

最后,当尝试一个非常小的文件样本(100KB或更少),并运行修改后的代码时,我能够对文件进行标记.

对正在发生的事情的任何见解?谢谢.

# tokenizing large file one line at a time
import nltk
filename=open("X:\MyFile.txt","r").read()
type(raw) #str
tokens = '' 
for line in filename
        tokens+=nltk.word_tokenize(filename)
#cannot concatenate 'str' and 'list' objects
Run Code Online (Sandbox Code Playgroud)

以下适用于小文件:

import nltk
filename=open("X:\MyFile.txt","r").read()
type(raw)
tokens = nltk.word.tokenize(filename)
Run Code Online (Sandbox Code Playgroud)

python tokenize nltk

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

使用iPython Notebook / Enthought Canopy显示music21,musicXML PNG对象

我正在尝试music21库,以准备一个涉及类型分类和分类的机器学习项目。我和以下可用一些教程在这里。我将MuseScore用作我的MusicXML程序,并且试图从iPython运行整个程序。

尽管我可以从终端运行一些教程,但是某些元素在iPython内部似乎运行不佳。例如:

In [3]: sBach.show()
Out[3]: <music21.ipython21.objects.IPythonPNGObject at 0x10da0aa10>
Run Code Online (Sandbox Code Playgroud)

上面的行显示已创建PNG对象,但未显示。上面3的预期输出如下:

在此处输入图片说明 通过尝试以下iPython命令,我获得了图像的占位符,但没有图像。

In [6]: %load_ext music21.ipython21.ipExtension
In [7]: sBach.show()
Run Code Online (Sandbox Code Playgroud)

我的MusicXMLPath找不到任何问题。本教程涉及在Anaconda中使用musc21,但是我的所有开发工作都是通过Enthought完成的,因此,我不希望运行其他虚拟环境来在iPython中使用music21。

有什么方法可以在Enthought / iPython笔记本中运行music21吗?

在此处输入图片说明

png ipython enthought musicxml music21

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