是否可以将matplotlib步骤函数中的linestyle设置为虚线,点线等?
我试过了:
step(x, linestyle='--'),
step(x, '--')
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
题
如何assign
使用添加多个新列的原始DataFrame的副本?
期望的结果
df = pd.DataFrame({'A': range(1, 5), 'B': range(11, 15)})
>>> df.assign({'C': df.A.apply(lambda x: x ** 2), 'D': df.B * 2})
A B C D
0 1 11 1 22
1 2 12 4 24
2 3 13 9 26
3 4 14 16 28
Run Code Online (Sandbox Code Playgroud)
ATTEMPTS
上面的例子导致:
ValueError: Wrong number of items passed 2, placement implies 1
.
背景
assign
Pandas中的函数获取连接到新分配列的相关数据帧的副本,例如
df = df.assign(C=df.B * 2)
>>> df
A B C
0 1 11 22
1 2 …
Run Code Online (Sandbox Code Playgroud) 我有一个列表,每个条目都是公司名称
companies = ['AA', 'AAPL', 'BA', ....., 'YHOO']
Run Code Online (Sandbox Code Playgroud)
我想为列表中的每个条目创建一个新的数据帧.
就像是
(伪代码)
for c in companies:
c = pd.DataFrame()
Run Code Online (Sandbox Code Playgroud)
我已经找到了一种方法来做到这一点,但找不到它.有任何想法吗?
我正在尝试使用Cython来加速Pandas DataFrame计算,这相对简单:迭代DataFrame中的每一行,将该行添加到自身和DataFrame中的所有剩余行,将这些行加到每一行中,并生成列表这些款项.随着DataFrame中的行用尽,这些系列的长度将减少.这些系列存储为键入索引行号的字典.
def foo(df):
vals = {i: (df.iloc[i, :] + df.iloc[i:, :]).sum(axis=1).values.tolist()
for i in range(df.shape[0])}
return vals
Run Code Online (Sandbox Code Playgroud)
除了%%cython
在此函数的顶部添加,是否有人建议如何使用cdefs
将DataFrame值转换为双精度然后对此代码进行cython化?
下面是一些虚拟数据:
>>> df
A B C D E
0 -0.326403 1.173797 1.667856 -1.087655 0.427145
1 -0.797344 0.004362 1.499460 0.427453 -0.184672
2 -1.764609 1.949906 -0.968558 0.407954 0.533869
3 0.944205 0.158495 -1.049090 -0.897253 1.236081
4 -2.086274 0.112697 0.934638 -1.337545 0.248608
5 -0.356551 -1.275442 0.701503 1.073797 -0.008074
6 -1.300254 1.474991 0.206862 -0.859361 0.115754
7 -1.078605 0.157739 0.810672 0.468333 -0.851664
8 …
Run Code Online (Sandbox Code Playgroud) 我试图分析星星的数据.我有明星的时间序列,我想预测他们属于哪个班级(4种不同类型).我有那些明星的时间序列,我想通过去季节化,频率分析和其他可能相关的研究来分析这些时间序列.
对象time_series是一个熊猫DataFrame,包括10列:time_points_b,light_points_b(b代表蓝色)等等......
我首先要研究蓝灯时间序列.
import statsmodels.api as sm;
import pandas as pd
import matplotlib.pyplot as plt
pd.options.display.mpl_style = 'default'
%matplotlib inline
def star_key(slab_id, star_id_b):
return str(slab_id) + '_' + str(star_id_b)
raw_time_series = pd.read_csv("data/public/train_varlength_features.csv.gz", index_col=0, compression='gzip')
time_series = raw_time_series.applymap(csv_array_to_float)
time_points = np.array(time_series.loc[star_key(patch_id, star_id_b)]['time_points_b'])
light_points = np.array(time_series.loc[star_key(patch_id, star_id_b)]['light_points_b'])
error_points = np.array(time_series.loc[star_key(patch_id, star_id_b)]['error_points_b'])
light_data = pd.DataFrame({'time':time_points[:], 'light':light_points[:]})
residuals = sm.tsa.seasonal_decompose(light_data);
light_plt = residuals.plot()
light_plt.set_size_inches(10, 5)
light_plt.tight_layout()
Run Code Online (Sandbox Code Playgroud)
当我应用seasonal_decompose方法时,此代码给出了属性错误:AttributeError:'Int64Index'对象没有属性'inferred_freq'
LUT = np.genfromtxt('test.out', delimiter=',', dtype=float)
LUT:
12, 25, 136, 6743
13, 26, 139, 6786
14, 27, 142, 6791
15, 28, 145, 6789
Run Code Online (Sandbox Code Playgroud)
要从LUT读取的值如下:
x1, x2, x3 = 12.5, 25.5, 137
Run Code Online (Sandbox Code Playgroud)
对于每个给定值(3列)读取LUT中的相邻两个值,我必须对结果进行线性插值(LUT中的第4列).
给定值(x1,x2,x3)属于LUT的第1行和第2行之间.基于此如何读取第1行和第2行之间的结果?
是否有一种更简单,更有内存效率的方法来单独执行numpy.
import numpy as np
ar = np.array(a[l:r])
ar += c
a = a[0:l] + ar.tolist() + a[r:]
Run Code Online (Sandbox Code Playgroud)
它可能看起来很原始,但它涉及获取给定数组的子数组副本,然后准备两个相同的副本以除了标量添加之外还在左右方向上追加.我希望找到一些更优化的方法来做到这一点.我想要一个完全在Python列表或NumPy数组中的解决方案,但不能同时从一种形式转换到另一种形式,如上所示,当数据量很大时会导致严重的开销.
我是python的新手,最近学会了使用Pandas在python中创建一个系列.我可以定义一个系列,例如: x = pd.Series([1, 2, 3, 4, 5])
但是如何定义一个范围的系列,比如1到100,而不是输入从1到100的所有元素?
我想将此矩阵转换为pandas数据帧. csc_matrix
括号中的第一个数字应该是索引,第二个数字是列,最后的数字是数据.
我想这样做在文本分析中进行特征选择,第一个数字代表文档,第二个数字代表单词,最后一个数字代表TFIDF分数.
获取数据框有助于我将文本分析问题转换为数据分析.
我的代码中出现错误,因为我试图通过调用csv中的元素来创建数据帧.我从文件中调用了两列:CompanyName和QualityIssue.质量问题有三种类型:设备质量,用户和两者.我遇到了试图制作数据帧df.Equipment质量的问题,这显然不起作用,因为那里有空间.我想从原始文件中获取设备质量,并用下划线替换空格.
输入:
Top Calling Customers, Equipment Quality, User, Neither,
Customer 3, 2, 2, 0,
Customer 1, 0, 2, 1,
Customer 2, 0, 1, 0,
Customer 4, 0, 1, 0,
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import numpy as np
import pandas as pd
import pandas.util.testing as tm; tm.N = 3
# Get the data.
data = pd.DataFrame.from_csv('MYDATA.csv')
# Group the data by calling CompanyName and QualityIssue columns.
byqualityissue = data.groupby(["CompanyName", "QualityIssue"]).size()
# Make a pandas dataframe of the grouped data.
df = pd.DataFrame(byqualityissue)
# Change …
Run Code Online (Sandbox Code Playgroud) python ×9
pandas ×7
numpy ×4
dataframe ×3
arrays ×2
cython ×1
linestyle ×1
lookup ×1
matplotlib ×1
performance ×1
python-3.x ×1
range ×1
series ×1
statsmodels ×1
strip ×1
whitespace ×1