小编Gre*_*ton的帖子

ggplot中的条形排序

我已经在这个论坛中查看了答案,但似乎无法找到这个具体问题的答案.我有以下数据,并希望创建一个条形图,其中条形按"值"从大到小排序,而不是按字母顺序排列:

breadth_data <- read.table(textConnection("Stakeholder  Value
'Grantseekers'  0.90
'Donors'    0.89
'Community' 0.55
'Hurricane Relief Fund' 0.24
'Media' 0.19
'Employment Seekers'    0.12
'Affiliates'    0.10
'Youth' 0.09
'Women' 0.02
'Former Board Members'  0.01"), header=TRUE)
Run Code Online (Sandbox Code Playgroud)

然后是基本条形图:

c <- ggplot(breadth_data, aes(x=Stakeholder, y=Value))
c + geom_bar(stat="identity") + coord_flip() + scale_y_continuous('') + scale_x_discrete('')
Run Code Online (Sandbox Code Playgroud)

我已经尝试过在StackOverflow上看到的许多不同的重新排序和转换,但我似乎无法找到一个有效的.我相信这很简单,但我将不胜感激!

谢谢,

格雷格

r bar-chart ggplot2

47
推荐指数
1
解决办法
3万
查看次数

向量化或加速 PANDAS 列上的 Fuzzywuzzy 字符串匹配

我正在尝试在充满组织名称的 PANDAS 列中寻找潜在匹配项。我目前正在使用 iterrows() 但它在具有 ~70,000 行的数据帧上非常慢。在查看了 StackOverflow 之后,我尝试实现一个 lambda 行(应用)方法,但这似乎几乎没有加快速度,如果有的话。

数据框的前四行如下所示:

index  org_name
0   cliftonlarsonallen llp minneapolis MN
1   loeb and troper llp newyork NY
2   dauby o'connor and zaleski llc carmel IN
3   wegner cpas llp madison WI
Run Code Online (Sandbox Code Playgroud)

以下代码块有效,但需要大约五天的时间来处理:

org_list = df['org_name']
from fuzzywuzzy import process
for index, row in df.iterrows():
    x = process.extract(row['org_name'], org_list, limit=2)[1]
    if x[1]>93:
        df.loc[index, 'fuzzy_match'] = x[0]
        df.loc[index, 'fuzzy_match_score'] = x[1]
Run Code Online (Sandbox Code Playgroud)

实际上,对于每一行,我将组织名称与所有组织名称的列表进行比较,取前两个匹配项,然后选择第二个最佳匹配项(因为顶部匹配项将是相同的名称),然后设置一个条件分数必须高于 93 才能创建新列。我创建附加列的原因是我不想简单地替换值——我想先仔细检查结果。

有没有办法加快这个速度?我阅读了几篇博客文章和 StackOverflow 问题,这些问题讨论了“向量化”这段代码,但我的尝试失败了。我还考虑过简单地创建一个 70,000 x 70,000 Levenshtein 距离矩阵,然后从中提取信息。有没有更快的方法来为列表或 PANDAS …

python performance pandas fuzzywuzzy

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

在ggplot2条形图中勾选标签

我有一个简单的数据帧,by_day,我想绘制出来:

 X weekday         variable value
0       0 Number_of_tweets  5820
1       1 Number_of_tweets  6965
2       2 Number_of_tweets  7415
3       3 Number_of_tweets  6800
4       4 Number_of_tweets  5819
5       5 Number_of_tweets  1753
6       6 Number_of_tweets  1137
Run Code Online (Sandbox Code Playgroud)

我可以毫无问题地获得基本情节.

daily_plot <- ggplot(data=by_day, aes(x=by_day$weekday, y=by_day$value)) + 
  geom_bar(stat = "identity") 
Run Code Online (Sandbox Code Playgroud)

当我尝试修改值标签时出现问题.如果我这样做,我最终会在x轴的右侧增加额外的空间:

daily_plot + 
  scale_x_discrete("Day of the Week", breaks = c("0","1","2","3","4","5","6"), labels=c("Mon","Tues","Wed","Th","Fri","Sat","Sun"))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果我这样做,那么问题是条形和新标签是偏移的

daily_plot + 
  scale_x_discrete("Day of the Week", breaks = c("0","1","2","3","4","5","6"),    labels=c("Mon","Tues","Wed","Th","Fri","Sat","Sun"), limits=c("0","1","2","3","4","5","6")) + 
  theme(axis.title.x = element_text(vjust=-0.5), axis.title.y=element_text(vjust=0.1)) 
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我花了一些时间浏览ggplot2文档以及StackOverflow,但找不到相同的问题.任何帮助,将不胜感激.

plot r ggplot2

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

使用Python,SQLALchemy,Sqlite设置/插入多对多数据库

我正在学习Python,作为第一个项目,我正在使用Twitter RSS提要,解析数据,并将数据插入到sqlite数据库中.我已经能够成功地将每个feed条目解析为内容变量(例如,"你应该买低......"),一个url变量(例如,你' http://bit.ly/HbFwL '),以及标签列表(例如,#stocks',u'#stockmarket',u'#financial',u'#money',u'#mkt']).我也成功地将这三个信息插入到sqlite"RSSEntries"表中的三个单独的列中,其中每一行都是不同的rss条目/推文.

但是,我想建立一个数据库,其中各个RSS订阅源条目(即单个推文)与每个条目关联的主题标签之间存在多对多关系.所以,我使用sqlalchemy设置了下表(第一个表只包含我要下载和解析的Twitterers的RSS源):

RSSFeeds = schema.Table('feeds', metadata,
    schema.Column('id', types.Integer, 
        schema.Sequence('feeds_seq_id', optional=True), primary_key=True),
    schema.Column('url', types.VARCHAR(1000), default=u''),
)

RSSEntries = schema.Table('entries', metadata,
    schema.Column('id', types.Integer, 
        schema.Sequence('entries_seq_id', optional=True), primary_key=True),
    schema.Column('feed_id', types.Integer, schema.ForeignKey('feeds.id')),
    schema.Column('short_url', types.VARCHAR(1000), default=u''),
    schema.Column('content', types.Text(), nullable=False),
    schema.Column('hashtags', types.Unicode(255)),
)

tag_table = schema.Table('tag', metadata,
    schema.Column('id', types.Integer,
       schema.Sequence('tag_seq_id', optional=True), primary_key=True),
    schema.Column('tagname', types.Unicode(20), nullable=False, unique=True)
)

entrytag_table = schema.Table('entrytag', metadata,
    schema.Column('id', types.Integer,
        schema.Sequence('entrytag_seq_id', optional=True), primary_key=True),
    schema.Column('entryid', types.Integer, schema.ForeignKey('entries.id')),
    schema.Column('tagid', types.Integer, schema.ForeignKey('tag.id')),
)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经能够使用以下代码成功地将三个主要信息输入到RSSEntries表中(缩写为......)

engine = create_engine('sqlite:///test.sqlite', echo=True) …
Run Code Online (Sandbox Code Playgroud)

python sqlite many-to-many sqlalchemy insert

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

重新安装后 Conda 无法工作 - zstandard 问题

几天前,我在 Windows 10 机器上使用 conda 安装软件包时开始出现问题。它给了我一条错误消息UserWarning: zstandard could not be imported. Running without .conda support.

我做了一些谷歌搜索并尝试重新安装 Anaconda。我无法执行 anaconda--clean 因为由于 conda 问题,它不会为我安装。但是,我使用了卸载程序,然后删除了 .conda 等文件夹——我能找到的所有文件夹。我重新安装了。同样的问题。然后我再次卸载并重新安装,这次选择“添加到路径”选项。当我加载一些包时它似乎可以工作,但是当我创建一个新环境并激活它时,Jupyter笔记本无法识别这些包。然后它又开始在 conda 中给我错误消息:

conda list
C:\Users\USERNAME\anaconda3\lib\site-packages\conda_package_streaming\package_streaming.py:19: warnings.warn("zstandard could not be imported. Running without .conda support.")

C:\Users\USERNAME\anaconda3\lib\site-packages\conda_package_handling\api.py:29: 
UserWarning: Install zstandard Python bindings for .conda support  _warnings.warn("Install zstandard Python bindings for .conda support")
Run Code Online (Sandbox Code Playgroud)

我使用 Anaconda 已有六年了,这是我遇到的第一个主要问题。到目前为止,我已经花了大约 8 个小时试图解决这个问题,而且有点疯狂,所以我真的很感激任何建议。我看过这个问题并尝试了第二种解决方案,但它不起作用。谷歌上似乎没有太多,所以这可能很少见。

谢谢!

python anaconda conda windows-10

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

将PANDAS数据帧从每月转换为每日

我有一个包含2014年月度数据的数据框,用于317个股票代码系列(317个代码×12个月= DF中的3,804个行).我想将其转换为每日数据帧(317个代码x 365天= 115,705行).因此,我认为我需要在每个月的每一天传播月度值时进行上采样或重新索引,但我无法使其正常工作.

数据框目前采用以下格式:

>>> df
month    ticker   b    c
2014-1   AAU      10   .04     #different values every month for each ticker
2014-2   AAU      20   .03
2014-3   AAU      13   .06
.
2014-12  AAU      11   .03
.
.
.
2014-1   ZZY      11   .11
2014-2   ZZY      6    .03
.
2014-12  ZZY      17   .09
Run Code Online (Sandbox Code Playgroud)

这就是我想要的:

>>> df
day          ticker   b    c
2014-01-01   AAU      10   .04  #same values every day in month for each ticker
2014-01-02   AAU      10   .04
2014-01-03   AAU      10   .04
. …
Run Code Online (Sandbox Code Playgroud)

python pandas

5
推荐指数
2
解决办法
6015
查看次数

PANDAS中的累积集

我有一个推文数据框,我希望按日期对数据框进行分组,并生成一个列,其中包含截至该日期的所有唯一用户的累积列表.现有的功能(例如,cumsum)似乎都不适用于此.以下是原始推文数据框的示例,其中索引(created_at)采用日期时间格式:

In [3]: df
Out[3]: 
            screen_name 
created_at  
04-01-16    Bob 
04-01-16    Bob
04-01-16    Sally
04-01-16    Sally
04-02-16    Bob
04-02-16    Miguel
04-02-16    Tim
Run Code Online (Sandbox Code Playgroud)

我可以按日期折叠数据集,并获得每天唯一用户的列:

In [4]: df[['screen_name']].groupby(df.index.date).aggregate(lambda x: set(list(x)))

Out[4]:             from_user_screen_name
        2016-04-02  {Bob, Sally}
        2016-04-03  {Bob, Miguel, Tim}
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但我想要的是拥有这样的"累积集":

Out[4]:             Cumulative_list_up_to_this_date   Cumulative_number_of_unique_users
        2016-04-02  {Bob, Sally}                      2
        2016-04-03  {Bob, Sally, Miguel, Tim}         4
Run Code Online (Sandbox Code Playgroud)

最终,我真正感兴趣的是最后一栏中的累计数字,所以我可以绘制它.我考虑过循环日期和其他事情,但似乎找不到好方法.在此先感谢您的帮助.

python pandas

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