我有一个巨大的市政图书馆目录数据集,包括书名,它所在的图书馆,图书馆的自治市镇以及借出的次数.
我想为每个社区找到最受欢迎的三本书.
理想情况下,我会得到这样的东西:
Borough Title Total_loans
A Book1 35615
A Book2 34895
A Book3 2548
B Book1 6541
B Book2 5425
Run Code Online (Sandbox Code Playgroud)
等等
这是我能够得到的最接近的,但结果数据框架没有按行政区划分,难以阅读.
import pandas as pd
df = pd.DataFrame({"borough":["A", "B", "B", "A", "A"], "title":["Book2", "Book1", "Book2", "Book2", "Book1"], "total_loans":[4, 48, 46, 78, 15]})
top_boroughs = df.groupby(['borough','title'])
top_boroughs.aggregate(sum).sort(['total_loans','title'], ascending=False)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我有这个数据框:
>> df = pd.DataFrame({'Place' : ['A', 'A', 'B', 'B', 'C', 'C'], 'Var' : ['All', 'French', 'All', 'German', 'All', 'Spanish'], 'Values' : [250, 30, 120, 12, 200, 112]})
>> df
Place Values Var
0 A 250 All
1 A 30 French
2 B 120 All
3 B 12 German
4 C 200 All
5 C 112 Spanish
Run Code Online (Sandbox Code Playgroud)
它具有每行两行的重复模式Place
.我想重塑它,因此它是每行一行Place
,Var
列变成两列,一列用于"全部",另一列用于另一列.
像这样:
Place All Language Value
A 250 French 30
B 120 German 12
C 200 Spanish …
Run Code Online (Sandbox Code Playgroud) 我正在根据本教程制作区域分布图。
但不是将数据分成相等的间隔,如下所示:
bins = np.linspace(values.min(), values.max(), 7)
我正在使用 PySAL 的 Jenks 自然中断,因为我的数据分布不均匀:
from pysal.esda.mapclassify import Natural_Breaks as nb
# values is a pandas Series
breaks = nb( values, initial=150, k = 7)
Run Code Online (Sandbox Code Playgroud)
这使地图颜色看起来不错,但它弄乱了图例:
所以我尝试为地图分配 Jenks 颜色,并为图例分配相等的间隔,但发生了这种情况:
颜色条被分配了正确的刻度标签,但位置错误。所以我的问题是:我怎样才能让颜色条的间隔相等,但刻度标签是正确位置的自然中断值?
这是图例的相关代码:
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from pysal.esda.mapclassify import Natural_Breaks as nb
values = pd.Series([71664, 65456, 60378, 50128, 46618, 44028, 42642, 41237, 35300, 34891, 34848, 33089, 29964, 25193, 25088, 23879, …
Run Code Online (Sandbox Code Playgroud) 我试图在 Seaborn FacetGrid 中对两条线之间的区域进行着色。该fill_between
方法将执行此操作,但我需要访问每个子图中每行的值以将它们传入。
这是我的代码:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
data = [{'Change': 0.0, 'Language': 'Algonquin', 'Type': 'Mother tongue', 'Year': '2011'}, {'Change': 0.0, 'Language': 'Algonquin', 'Type': 'Spoken at home', 'Year': '2011'}, {'Change': -21.32, 'Language': 'Algonquin', 'Type': 'Mother tongue', 'Year': '2016'}, {'Change': -34.84, 'Language': 'Algonquin', 'Type': 'Spoken at home', 'Year': '2016'}, {'Change': 0.0, 'Language': 'Atikamekw', 'Type': 'Mother tongue', 'Year': '2011'}, {'Change': 0.0, 'Language': 'Atikamekw', 'Type': 'Spoken at home', 'Year': '2011'}, {'Change': 5.41, …
Run Code Online (Sandbox Code Playgroud) 我有多个传感器按月和年的传感器数据:
import pandas as pd
df = pd.DataFrame([
['A', 'Jan', 2015, 13],
['A', 'Feb', 2015, 10],
['A', 'Jan', 2016, 12],
['A', 'Feb', 2016, 11],
['B', 'Jan', 2015, 7],
['B', 'Feb', 2015, 8],
['B', 'Jan', 2016, 4],
['B', 'Feb', 2016, 9]
], columns = ['sensor', 'month', 'year', 'value'])
In [2]: df
Out[2]:
sensor month year value
0 A Jan 2015 13
1 A Feb 2015 10
2 A Jan 2016 12
3 A Feb 2016 11
4 B Jan 2015 7 …
Run Code Online (Sandbox Code Playgroud) 我有一个数据框,每 10 分钟有一个日期时间列和一个数值:
df1 = pd.DataFrame({'time' : pd.date_range('1/1/2018', periods=20, freq='10min'), 'value' : np.random.randint(2, 20, size=20)})
Run Code Online (Sandbox Code Playgroud)
另一个有事件时间表,有开始时间和结束时间。可以同时发生多个事件:
df2 = pd.DataFrame({'start_time' : ['2018-01-01 00:00:00', '2018-01-01 00:00:00','2018-01-01 01:00:00', '2018-01-01 01:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00' ], 'end_time' : ['2018-01-01 01:00:00', '2018-01-01 01:00:00', '2018-01-01 02:00:00','2018-01-01 02:00:00', '2018-01-01 02:00:00', '2018-01-01 03:00:00'], 'event' : ['A', 'B', 'C', 'D', 'E', 'F'] })
df2[['start_time', 'end_time']] = df2.iloc[:,0:2].apply(pd.to_datetime)
Run Code Online (Sandbox Code Playgroud)
我想对 df1 进行左连接,所有事件都在开始和结束时间内。我的输出表应该是:
time value event
0 2018-01-01 00:00:00 5 A
1 2018-01-01 00:00:00 5 B
2 2018-01-01 00:10:00 15 A
3 …
Run Code Online (Sandbox Code Playgroud)