小编jea*_*elj的帖子

python sm.ols更改摘要格式以避免科学记数法

我正在运行一个ols模型,我需要知道所有系数,所以我可以在我的分析中使用它们.如何以与科学计数法不同的格式显示/保存系数?

model = sm.ols(formula="sales ~ product_category + quantity_bought + quantity_ordered + quantity_returned + season", data=final_email).fit()
print model.summary()

OLS Regression Results                            
==============================================================================
Dep. Variable:                sales   R-squared:                       0.974
Model:                            OLS   Adj. R-squared:                  0.938
Method:                 Least Squares   F-statistic:                     27.26
Date:                Tue, 18 Apr 2017   Prob (F-statistic):           5.39e-13
Time:                        11:43:36   Log-Likelihood:                -806.04
No. Observations:                  60   AIC:                             1682.
Df Residuals:                      25   BIC:                             1755.
Df Model:                          34                                         
Covariance Type:            nonrobust                                         
======================================================================================
                         coef    std err          t      P>|t|      [95.0% Conf. Int.]
--------------------------------------------------------------------------------------
Intercept            -2.79e+05   2.883e+05     -0.987      0.333     -8.92e+05 …
Run Code Online (Sandbox Code Playgroud)

python format regression statsmodels

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

Python Pandas:使用零值的数字分组对/ bin进行分类

我不确定,如果这是最有效的方式,但我正在努力将客户支出分组到垃圾箱/桶中.

这是我正在研究的:

df.head()

Best_ID_S| Dollar
abc2464    0.00 
fdhg357    672.00  
hjg5235    250.00 
mjhur57    199.00 
erew3452   116.25 
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

bins = [0,250,500,750,1000,1500,2000,2500,3000,3500,4000,4500,5000,5500,6000,6500,7000,8000,1000000000000]
#I didn't know how to create 8000+ so I just added a crazy number in the end, it works

group_names = ['0-250','251-500','501-749','750-999','1000-1499','1500-1999','2000-2499','2500-2999','3000-3499','3500-3999','4000-4499','4500-4999','5000-5499','5500-5999','6000-6499','6500-6999','7000-7499','8000+']

categories = pd.cut(df_2014['Dollar'], bins, labels=group_names)
df['Category'] = pd.cut(df['Dollar'], bins, labels=group_names)
df['Buckets'] = pd.cut(df['Dollar'], bins)
Run Code Online (Sandbox Code Playgroud)

这就是我得到的,当我做df.head()时:

Best_ID_S| Dollar | Category |  Buckets
abc2464    0.00     NaN
fdhg357    672.00   501-749        (500, 750]
hjg5235    250.00   0-250          (0, 250]
mjhur57    199.00   0-250          (0, 250] …
Run Code Online (Sandbox Code Playgroud)

python grouping nan categories pandas

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

python pandas基于其他列条件的新列分类

使用以下python pandas dataframe df:

df = pd.DataFrame({'transaction_id': ['A123','A123','B345','B345','C567','C567','D678','D678'], 
                   'product_id': [255472, 251235, 253764,257344,221577,209809,223551,290678],
                   'product_category': ['X','X','Y','Y','X','Y','Y','X']})

transaction_id | product_id | product_category
A123              255472             X
A123              251235             X
B345              253764             Y
B345              257344             Y
C567              221577             X
C567              209809             Y
D678              223551             Y
D678              290678             X
Run Code Online (Sandbox Code Playgroud)

我需要添加另一列"transaction_category",它查看transaction_id以及transaction_id中的哪些产品类别.这是我要找的输出:

transaction_id | product_id | product_category | transaction_id
123              255472             X                X only
123              251235             X                X only
345              253764             Y                Y only
345              257344             Y                Y only
567              221577             X                X & Y
567              209809             Y …
Run Code Online (Sandbox Code Playgroud)

python conditional if-statement pandas

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

python熊猫时间线图

我有以下数据框

data_df = 
date          value
2016-01-15    1555
2016-01-16    1678
2016-01-17    1789
...  
Run Code Online (Sandbox Code Playgroud)

我想创建一个以日期为x轴的时间线图

我导入可视化模块

import matplotlib.pyplot as plt
%matplotlib inline
import vincent as vin
import seaborn as sb
Run Code Online (Sandbox Code Playgroud)

我尝试添加一列以格式化日期data_df ['dates'] = plt.date2num(ad_data.date)

然后我想绘制时间线plot_date(data_df.dates,data_df.shown)

这不起作用,因为我没有正确转换日期。

python graph pandas

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

python词典到pandas数据框有多个列

我有以下python字典:

d= {'data'      : Counter({ 'important' : 2,
                        'very'      : 3}),
    'analytics' : Counter({ 'boring'    : 5,
                        'sleep'     : 3})
    }
Run Code Online (Sandbox Code Playgroud)

我想以下列格式将其保存为pandas数据帧:

category  | word      | count
  data    | important | 2
  data    | very      | 3
analytics | boring    | 5
analytics | sleep     | 3
Run Code Online (Sandbox Code Playgroud)

我尝试了以下,但没有一个工作

df = pd.DataFrame(d.items()) 

df = pd.DataFrame.from_dict(d, orient='index').reset_index()

df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)

python dictionary dataframe pandas

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

python pandas部分字符串匹配

我创建了一个数据帧df,其中我有一个包含以下值的列:

category
20150115_Holiday_HK_Misc
20150115_Holiday_SG_Misc
20140116_DE_ProductFocus
20140116_UK_ProductFocus
Run Code Online (Sandbox Code Playgroud)

我想创建3个新列

category                  |           A              |  B  |       C     
20150115_Holiday_HK_Misc     20150115_Holiday_Misc     HK    Holiday_Misc 
20150115_Holiday_SG_Misc     20150115_Holiday_Misc     SG    Holiday_Misc
20140116_DE_ProductFocus     20140116_ProductFocus     DE    ProductFocus
20140116_UK_ProductFocus     20140116_ProductFocus     UK    ProductFocus
Run Code Online (Sandbox Code Playgroud)

在A栏中,我想取出"_HK" - 我想我需要手动编码,但这很好,我有所有国家代码的列表

在B栏中,就是那个国家代码

C列是A列,没有开头的日期

我正在尝试这样的事情,但没有走得太远.

 df['B'] = np.where([df['category'].str.contains("HK")==True], 'HK', 'Not Specified')
Run Code Online (Sandbox Code Playgroud)

谢谢

python string match pandas

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

Python Pandas 从日期创建日期时间索引

我有以下 python 熊猫数据帧 df:

    DATES       Sales
0   1/6/2013    5676
1   1/8/2014    45746
2   1/10/2015   42658
3   1/14/2015   890790
4   1/16/2016   5764
5   1/20/2014   7898
Run Code Online (Sandbox Code Playgroud)

我需要将日期更改为日期时间索引,以便我可以对其进行重新采样。

但是当我这样做时

pd.to_datetime(df,infer_datetime_format=True)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:ValueError:组装映射需要至少指定[年,月,日]:[日,月,年]丢失

python datetime date pandas

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

python pandas标准化回归列

我有以下df:

Date       Event_Counts   Category_A  Category_B
20170401      982457          0           1
20170402      982754          1           0
20170402      875786          0           1
Run Code Online (Sandbox Code Playgroud)

我正在为回归分析准备数据,并希望标准化Event_Counts列,以便它与类别类似.

我使用以下代码:

from sklearn import preprocessing
df['scaled_event_counts'] = preprocessing.scale(df['Event_Counts'])
Run Code Online (Sandbox Code Playgroud)

虽然我收到了这个警告:

DataConversionWarning: Data with input dtype int64 was converted to float64 by the scale function.
  warnings.warn(msg, _DataConversionWarning)
Run Code Online (Sandbox Code Playgroud)

它似乎有效; 有一个新专栏.但是,它有负数,如-1.3

我认为比例函数的作用是从数字中减去均值,并将其除以每一行的标准差; 然后将结果的min添加到每一行.

这种方式对熊猫不起作用吗?或者我应该使用normalize()函数还是StandardScaler()函数?我希望标准化列的比例为0到1.

谢谢

python normalize standardized scale pandas

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

Python DeprecationWarning:传递1d数组作为数据在0.17中被弃用,并将在0.19中引发ValueError

基于我之前的问题python pandas标准化回归列我将数据帧中的特定列重新调整为0到1之间.

scaler = preprocessing.MinMaxScaler(feature_range=(0,1))
email['scaled_quantity'] = scaler.fit_transform(email['Quantity'])
Run Code Online (Sandbox Code Playgroud)

不幸的是,我收到了这个错误

DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and will raise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample.
  warnings.warn(DEPRECATION_MSG_1D, DeprecationWarning)
Run Code Online (Sandbox Code Playgroud)

@Grr建议我将缩放应用于整个数据帧,但这不是一个选项.我需要按照它们的方式维护列,并且只想添加新的其他缩放列.

如何解决此折旧错误?

python pandas scikit-learn deprecation-warning

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

Python pandas:标记重复行

我使用以下代码表示重复的行

df['duplicate']=df.Column_A.duplicated()
Run Code Online (Sandbox Code Playgroud)

但是,当我查看df时,我看到以下内容:

Column_A | duplicate
AAA        False
ABC        False
ABC        True
Run Code Online (Sandbox Code Playgroud)

我需要第2行也是True,以便我可以轻松地过滤"重复"行.我怎么能做到这一点?

python duplicates pandas

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

python pandas:根据%随机分配控制与治疗分组

我正在进行实验设计,我需要通过预先存在的分组将数据帧df分成控制和处理组%.

这是数据帧df:

df.head()

customer_id | Group | many other columns
ABC             1
CDE             1
BHF             2
NID             1
WKL             2
SDI             2

pd.pivot_table(df,index=['Group'],values=["customer_id"],aggfunc=lambda x: len(x.unique()))

Group 1  : 55394
Group 2  : 34889
Run Code Online (Sandbox Code Playgroud)

现在我需要在df中添加一个标有"Flag"的列.对于第1组,我想随机分配50%"控制"和50%"测试".对于第2组,我想随机分配40%"控制"和60%"测试".

我正在寻找的输出:

customer_id | Group | many other columns | Flag
ABC             1                          Test
CDE             1                          Control
BHF             2                          Test
NID             1                          Test
WKL             2                          Control
SDI             2                          Test
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas experimental-design pandas-groupby

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

Python/pandas:带有非数字类别的条形图

我有下表:

song_ids                track_id    play_count_sum  user_id_count   genre_id
SOAAAMT12AB018C9C4  TRYIOYF12903CD4E73    1                1    Pop_Rock
SOAAAXN12A8C13A70C  TRXWDIG128F4274BF1    5                1    Latin
SOAABLP12A6D4F8861  TRXOSZE128F148A158    1                1    Pop_Rock
SOAABRT12A6D4F7940  TRUGBDI128F14548CD   13                2    International
SOAABVA12AC3DF673F  TRXVIGQ12903CE7F6E    4                3    Pop_Rock
Run Code Online (Sandbox Code Playgroud)

我想通过genre_id创建条形图,但是失败了,因为它不是数值.

import matplotlib.pyplot as plt
import numpy as np

f=df.plot(df[['genre_id']].grouby(),df[['play_count_sum']].sum())
Run Code Online (Sandbox Code Playgroud)

python matplotlib bar-chart pandas

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

python pandas用文字中的复数"s"来计算字数

我有以下python pandas数据帧:

Question_ID | Customer_ID | Answer
    1           234         The team worked very hard ...
    2           234         All the teams have been working together ...
Run Code Online (Sandbox Code Playgroud)

我将使用我的代码来计算答案列中的单词.但事先,我想从"球队"这个词中取出"s",所以在上面的例子中我统计球队:2而不是球队:1和球队:1.

我怎么能为所有的话呢?

python word-count pandas

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