我使用python中的Wordcloud包直接从文本文件生成词云。这是我从 stckoverflow 重新使用的代码:
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS
def random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
h = int(360.0 * 45.0 / 255.0)
s = int(100.0 * 255.0 / 255.0)
l = int(100.0 * float(random_state.randint(60, 120)) / 255.0)
return "hsl({}, {}%, {}%)".format(h, s, l)
file_content=open ("xyz.txt").read()
wordcloud = WordCloud(font_path = r'C:\Windows\Fonts\Verdana.ttf',
stopwords = STOPWORDS,
background_color = 'white',
width = 1200,
height = 1000,
color_func = random_color_func
).generate(file_content)
plt.imshow(wordcloud,interpolation="bilinear")
plt.axis('off')
plt.show()
Run Code Online (Sandbox Code Playgroud)
它给了我单个单词的 wordcloud。WordCloud() 函数中是否有任何参数可以在不格式化文本文件的情况下传递 n-gram。
我想要 bigram 的词云。或带有下划线的文字显示。喜欢:machine_learning(机器和学习是两个不同的词)
展示我想要的内容然后解释它会很容易。考虑以下数据框:
dr = {'mac':[1, 3, 2, 4, 1, 2], 's': ['aa', 'aa', 'c', 'd', 'ee', 'f']}
d = pd.DataFrame(data=dr)
Run Code Online (Sandbox Code Playgroud)
理想的输出是:
mac s
0 1 aa
4 1 ee
Run Code Online (Sandbox Code Playgroud)
我需要找到所有 'mac' 都有 'aa' 和 'ee' 值。在关于它的示例中,对于 mac = 1,它是真的。对于 mac = 3,它是假的,因为有 'aa' 值但没有 'ee'。
我有以下数据框:
df = pd.DataFrame({'Col1':[10,20,30,40,50], 'Col2':[60,70,80,90,100]}, index=pd.MultiIndex.from_arrays([['A','A','A','B','B'], [1,2,3,4,5]]))
Run Code Online (Sandbox Code Playgroud)
我想获得以下信息:
'A' 'B'
'Col1' 'Col2' 'Col1' 'Col2'
10 60 NaN NaN
20 70 NaN NaN
30 80 NaN NaN
NaN NaN 40 90
NaN NaN 50 100
Run Code Online (Sandbox Code Playgroud)
我尝试使用df.unstack(0).swaplevel(0,1,axis=1)但这会导致:
'A' 'B' 'A' 'B'
'Col1' 'Col1' 'Col2' 'Col2'
10 NaN 60 NaN
20 NaN 70 NaN
30 NaN 80 NaN
NaN 40 NaN 90
NaN 50 NaN 100
Run Code Online (Sandbox Code Playgroud)
有人能指出我正确的方向吗?
Pandas中的相同任务可以轻松完成
import pandas as pd
df = pd.DataFrame({"lists":[[i, i+1] for i in range(10)]})
df[['left','right']] = pd.DataFrame([x for x in df.lists])
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何做一些类似的东西 dask.dataframe
更新
到目前为止,我发现了这个解决方法
ddf = dd.from_pandas(df, npartitions=2)
ddf["left"] = ddf.apply(lambda x: x["lists"][0], axis=1, meta=pd.Series())
ddf["right"] = ddf.apply(lambda x: x["lists"][1], axis=1, meta=pd.Series())
Run Code Online (Sandbox Code Playgroud)
我想知道是否还有另一种方法可以进行.
假设我有以下数据框“ A”
utilization utilization_billable
service
1 10.0 5.0
2 30.0 20.0
3 40.0 30.0
4 40.0 32.0
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为以下数据框“ B”
utilization type
service
1 10.0 total
2 30.0 total
3 40.0 total
4 40.0 total
1 5.0 billable
2 20.0 billable
3 30.0 billable
4 32.0 billable
Run Code Online (Sandbox Code Playgroud)
因此,来自第一个的值将被归类为类型列,其值是total或billable。
data = {
'utilization': [10.0, 30.0, 40.0, 40.0],
'utilization_billable': [5.0, 20.0, 30.0, 32.0],
'service': [1, 2, 3, 4]
}
df = pd.DataFrame.from_dict(data).set_index('service')
print(df)
data = {
'utilization': [10.0, 30.0, …Run Code Online (Sandbox Code Playgroud) 我有以下代码绘制条形图(1 个系列),但如果“净”值为正,我需要将条着色为蓝色,如果为负,则将条着色为红色:
import pandas as pd
import plotly.graph_objects as go
df = pd.DataFrame({
'Net':[15,20,-10,-15],
'Date':['07/14/2020','07/15/2020','07/16/2020','07/17/2020']
})
df['Date'] = pd.to_datetime(df['Date'])
fig = go.Figure(data=[go.Bar(name='Net', x=df['Date'], y=df['Net'])])
fig.update_layout(barmode='stack')
fig.show()
Run Code Online (Sandbox Code Playgroud) 如何在plotlyexpress中找到趋势线的系数?
例如,我使用下面的代码来绘制趋势线,但现在我想知道系数。
import plotly.express as px
px.scatter(df, x='x_data', y='y_data', trendline="ols")
Run Code Online (Sandbox Code Playgroud) 我有以下代码
import plotly.graph_objs as go
layout1= go.Layout(title=go.layout.Title(text="A graph",x=0.5),
xaxis={'title':'x[m]'},
yaxis={'title':'y[m]','range':[-10,10]})
point_plot=[
go.Scatter(x=[3,4],y=[1,2],name="V0"),
go.Scatter(x=[1,2],y=[1,1],name="V0"),
go.Scatter(x=[5,6],y=[2,3],name="GT")
]
go.Figure(data=point_plot, layout=layout1).show()
Run Code Online (Sandbox Code Playgroud)
产生以下情节
然而,这并不是我想要的。我想要的是,标有“V0”的两组必须颜色相同,并且图例中只有一个标记。(实际上,我将绘制多于两组的图,例如由一条线连接的 20 组对,它们都必须是相同的颜色并且在图例中只有一个标记)
我有一个类似于以下示例的数据框:
| ID | 类型 | 值_1 | 值_2 |
|---|---|---|---|
| 1234 | A | 1 | 2 |
| 1234 | 乙 | 1 | 2 |
| 第789章 | A | 1 | 2 |
| 第789章 | 乙 | 1 | 2 |
| 第567章 | A | 1 | 2 |
我想转换以获得以下内容:
| ID | 值_1_A | 值_1_B | 值_2_A | 值_2_B |
|---|---|---|---|---|
| 1234 | 1 | 1 | 2 | 2 |
| 第789章 | 1 | 1 | 2 | 2 |
| 第567章 | 1 | 1 |
总之:使用“类型”列作为后缀复制值列并将数据帧转换为宽格式。
有没有任何干净、简单的方法可以在 pyspark 数据框或 pandas 上执行此操作?
我在 pandas 中有以下矩阵:
import numpy as np
import pandas as pd
df_matrix = pd.DataFrame(np.random.random((10, 10)))
Run Code Online (Sandbox Code Playgroud)
我需要获得一个包含 10 个中值的向量,每条蓝线上有 1 个值,如下图所示:
输出向量中的最后一个数字基本上是 1 个数字而不是中位数。
python ×10
pandas ×7
plotly ×3
dataframe ×2
dask ×1
numpy ×1
pyspark ×1
reshape ×1
statsmodels ×1
word-cloud ×1