如何解决python柱状图标签和图重叠的问题?

Python010

如何解决python柱状图标签和图重叠的问题?,第1张

个人看法哈,数据图形化,除了直观地展示数据外,还需注意图表的美观。

对于这个图,内部柱子都快顶到上边界了。为了美观,一般都会留白的,比如下面这个图:

所以,如要解决你所提出的问题,就我的了解而言,只有增大Y轴的数值。一旦Y轴的值增大,图的上部分就留出了足够多的空白,一方面解决你所遇到的问题,另一方面图形看起来美观自然一些,没之前那么紧凑。

奥巴马的竞选资金是一点点从选民那里募集来的。如获党内提名,可得政府拔款,但也没多少。美国大选不仅禁外国人捐款,而且禁止公司机构捐款,而只允许个人捐款。不仅如此,还为个人捐款限制了上限,防止富人捐过多的款而影响未来的公平执政。

不仅富人自己不能多捐,如果某个老板呼吁自己的员工给某人捐钱或投票支持他,都是犯法的。因此,想要筹到几千万竞争资金,唯一的办法是争取更多选民支持,一点点募集。所以,中国、公司、大笔捐款,这三条都是犯法的。

我记得以前已经有华人闹过这种丑闻了。美国的选举法就是要严防少数人企图用几个臭钱影响美国的政治。所以我们作为外国人就更别去自讨没趣了。

导入包

In [1]:

import numpy as npimport pandas as pdfrom pandas import Series,DataFrame

方便大家操作,将月份和参选人以及所在政党进行定义

In [2]:

months = {'JAN' : 1, 'FEB' : 2, 'MAR' : 3, 'APR' : 4, 'MAY' : 5, 'JUN' : 6, 'JUL' : 7, 'AUG' : 8, 'SEP' : 9, 'OCT': 10, 'NOV': 11, 'DEC' : 12}of_interest = ['Obama, Barack', 'Romney, Mitt', 'Santorum, Rick','Paul, Ron', 'Gingrich, Newt']parties = { 'Bachmann, Michelle': 'Republican', 'Romney, Mitt': 'Republican', 'Obama, Barack': 'Democrat', "Roemer, Charles E. 'Buddy' III": 'Reform', 'Pawlenty, Timothy': 'Republican', 'Johnson, Gary Earl': 'Libertarian', 'Paul, Ron': 'Republican', 'Santorum, Rick': 'Republican', 'Cain, Herman': 'Republican', 'Gingrich, Newt': 'Republican', 'McCotter, Thaddeus G': 'Republican', 'Huntsman, Jon': 'Republican', 'Perry, Rick': 'Republican'}

读取文件

In [3]:

table = pd.read_csv('data/usa_election.txt')table.head()

C:\jupyter\lib\site-packages\IPython\core\interactiveshell.py:2785: DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False. interactivity=interactivity, compiler=compiler, result=result)

Out[3]:

cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num

0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166

1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166

2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073

3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073

4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166

In [8]:

#使用map函数 字典,新建一列各个候选人所在党派partytable['party'] = table['cand_nm'].map(parties)table.head()

Out[8]:

cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party

0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican

1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 23-JUN-11 NaN NaN NaN SA17A 736166 Republican

2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 05-JUL-11 NaN NaN NaN SA17A 749073 Republican

3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 01-AUG-11 NaN NaN NaN SA17A 749073 Republican

4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 20-JUN-11 NaN NaN NaN SA17A 736166 Republican

In [10]:

#party这一列中有哪些元素table['party'].unique()

Out[10]:

array(['Republican', 'Democrat', 'Reform', 'Libertarian'], dtype=object)

In [ ]:

#使用value_counts()函数,统计party列中各个元素出现次数,value_counts()是Series中的,无参,返回一个带有每个元素出现次数的Series

In [11]:

table['party'].value_counts()

Out[11]:

Democrat 292400Republican 237575Reform 5364Libertarian 702Name: party, dtype: int64

In [12]:

#使用groupby()函数,查看各个党派收到的政治献金总数contb_receipt_amttable.groupby(by='party')['contb_receipt_amt'].sum()

Out[12]:

partyDemocrat 8.105758e 07Libertarian4.132769e 05Reform 3.390338e 05Republican 1.192255e 08Name: contb_receipt_amt, dtype: float64

In [13]:

#查看具体每天各个党派收到的政治献金总数contb_receipt_amt 。使用groupby([多个分组参数])table.groupby(by=['party','contb_receipt_dt'])['contb_receipt_amt'].sum()

Out[13]:

party contb_receipt_dtDemocrat01-AUG-11175281.0001-DEC-11651532.8201-JAN-12 58098.8001-JUL-11165961.0001-JUN-11145459.0001-MAY-11 82644.0001-NOV-11122529.8701-OCT-11148977.0001-SEP-11403297.6202-AUG-11164510.1102-DEC-11216056.9602-JAN-12 89743.6002-JUL-11 17105.0002-JUN-11422453.0002-MAY-11396675.0002-NOV-11147183.8102-OCT-11 62605.6202-SEP-11137948.4103-AUG-11147053.0203-DEC-11 81304.0203-JAN-12 87406.9703-JUL-11 5982.0003-JUN-11320176.2003-MAY-11261819.1103-NOV-11119304.5603-OCT-11363061.0203-SEP-11 45598.0004-APR-11640235.1204-AUG-11598784.2304-DEC-11 72795.10 ...Republican 29-AUG-11941769.2329-DEC-11428501.4229-JAN-11 750.0029-JAN-12 75220.0229-JUL-11233423.3529-JUN-11 1340704.2929-MAR-11 38875.0029-MAY-11 8363.2029-NOV-11407322.6429-OCT-11 81924.0129-SEP-11 1612794.5230-APR-11 43004.8030-AUG-11915548.5830-DEC-11492470.4530-JAN-12255204.8030-JUL-11 12249.0430-JUN-11 2744932.6330-MAR-11 50240.0030-MAY-11 17803.6030-NOV-11809014.8330-OCT-11 43913.1630-SEP-11 4886331.7631-AUG-11 1017735.0231-DEC-11 1094376.7231-JAN-11 6000.0031-JAN-12869890.4131-JUL-11 12781.0231-MAR-11 62475.0031-MAY-11301339.8031-OCT-11734601.83Name: contb_receipt_amt, Length: 1183, dtype: float64

In [14]:

def trasform_date(d):day,month,year = d.split('-')month = months[month]return "20" year '-' str(month) '-' day

In [17]:

#将表中日期格式转换为'yyyy-mm-dd'。日期格式,通过函数加map方式进行转换table['contb_receipt_dt'] = table['contb_receipt_dt'].apply(trasform_date)

In [18]:

table.head()

Out[18]:

cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party

0 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 250.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican

1 C00410118 P20002978 Bachmann, Michelle HARVEY, WILLIAM MOBILE AL 3.6601e 08 RETIRED RETIRED 50.0 2011-6-23 NaN NaN NaN SA17A 736166 Republican

2 C00410118 P20002978 Bachmann, Michelle SMITH, LANIER LANETT AL 3.68633e 08 INFORMATION REQUESTED INFORMATION REQUESTED 250.0 2011-7-05 NaN NaN NaN SA17A 749073 Republican

3 C00410118 P20002978 Bachmann, Michelle BLEVINS, DARONDA PIGGOTT AR 7.24548e 08 NONE RETIRED 250.0 2011-8-01 NaN NaN NaN SA17A 749073 Republican

4 C00410118 P20002978 Bachmann, Michelle WARDENBURG, HAROLD HOT SPRINGS NATION AR 7.19016e 08 NONE RETIRED 300.0 2011-6-20 NaN NaN NaN SA17A 736166 Republican

In [19]:

#查看老兵(捐献者职业)DISABLED VETERAN主要支持谁 :查看老兵们捐赠给谁的钱最多table['contbr_occupation'] == 'DISABLED VETERAN'

Out[19]:

0 False1 False2 False3 False4 False5 False6 False7 False8 False9 False10False11False12False13False14False15False16False17False18False19False20False21False22False23False24False25False26False27False28False29False ... 536011False536012False536013False536014False536015False536016False536017False536018False536019False536020False536021False536022False536023False536024False536025False536026False536027False536028False536029False536030False536031False536032False536033False536034False536035False536036False536037False536038False536039False536040FalseName: contbr_occupation, Length: 536041, dtype: bool

In [21]:

old_bing_df = table.loc[table['contbr_occupation'] == 'DISABLED VETERAN']

In [22]:

old_bing_df.groupby(by='cand_nm')['contb_receipt_amt'].sum()

Out[22]:

cand_nmCain, Herman 300.00Obama, Barack 4205.00Paul, Ron 2425.49Santorum, Rick 250.00Name: contb_receipt_amt, dtype: float64

In [23]:

table['contb_receipt_amt'].max()

Out[23]:

1944042.43

In [24]:

#找出候选人的捐赠者中,捐赠金额最大的人的职业以及捐献额 .通过query("查询条件来查找捐献人职业")table.query('contb_receipt_amt == 1944042.43')

Out[24]:

cmte_id cand_id cand_nm contbr_nm contbr_city contbr_st contbr_zip contbr_employer contbr_occupation contb_receipt_amt contb_receipt_dt receipt_desc memo_cd memo_text form_tp file_num party

176127 C00431445 P80003338 Obama, Barack OBAMA VICTORY FUND 2012 - UNITEMIZED CHICAGO IL 60680 NaN NaN 1944042.43 2011-12-31 NaN X * SA18 763233 Democrat

来源:https://www.icode9.com/content-1-497751.html

首先,dataframe自带的柱状图,可以将每列作为一个图例

import pandas as pd

data=pd.read_excel()

data.bar()