假設通過爬蟲你獲取到了長沙2018年10,11月份每天白天的最高氣溫(分別位于列表a,b),那么 此時如何尋找出氣溫和隨時間變化的某種規律 a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23] b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13]
# 假設通過爬蟲你獲取到了長沙2018年10,11月份每天白天的最高氣溫(分別位于列表a,b),那么# 此時如何尋找出氣溫和隨時間變化的某種規律# a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]# b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13]from matplotlib import pyplot as plt
from matplotlib import font_managerfont = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
y_10 =[11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
y_11 =[26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13]# 設置圖片大小
plt.figure(figsize=(15,8), dpi=80)# 十月份 31天
x_10 =range(1,32)# 十一月份 30天
x_11 =range(51,81)# 繪制散點圖
plt.scatter(x_10, y_10, label="十月份")
plt.scatter(x_11, y_11, label="十一月份")# 設置x軸刻度
_x =list(x_10)+list(x_11)
_xticks_label =["十月{}日".format(i)for i in x_10]
_xticks_label +=["十月{}日".format(i -30)for i in x_11]
plt.xticks(_x[::3], _xticks_label[::3], fontproperties=font, rotation=45)# 添加描述信息
plt.xlabel("時間", fontproperties=font)
plt.xlabel("溫度", fontproperties=font)# 添加標題
plt.title("2018年長沙市10,11月份氣溫變化", fontproperties=font)# 添加圖例
plt.legend(prop=font)plt.show()
2.繪制條形圖
2.1使用的方法:bar(x,y)
假設你獲取到了2019年內地電影票房前20的電影(列表a)和電影票房數據(列表b),那么如何更加直觀 的展示該數據 a = [“流浪地球”,“復仇者聯盟4:終局之戰”,“哪吒之魔童降世”,“瘋狂的外星人”,“飛馳人生”,“蜘蛛俠:英 雄遠征”,“掃毒2天地對決”,“烈火英雄”,“大黃蜂”,“驚奇隊長”,“比悲傷更悲傷的故事”,“哥斯拉2:怪獸之 王”,“阿麗塔:戰斗天使”,“銀河補習班”,“獅子王”,“反貪風暴4”,“熊出沒”,“大偵探皮卡丘”,"新喜劇之王 ",“使徒行者2:諜影行動”,] b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88, 6.86,6.58,6.23]
示例1
'''
假設你獲取到了2019年內地電影票房前20的電影(列表a)和電影票房數據(列表b),那么如何更加直觀
的展示該數據
a = ["流浪地球","復仇者聯盟4:終局之戰","哪吒之魔童降世","瘋狂的外星人","飛馳人生","蜘蛛俠:英
雄遠征","掃毒2天地對決","烈火英雄","大黃蜂","驚奇隊長","比悲傷更悲傷的故事","哥斯拉2:怪獸之
王","阿麗塔:戰斗天使","銀河補習班","獅子王","反貪風暴4","熊出沒","大偵探皮卡丘","新喜劇之王
","使徒行者2:諜影行動"]
b = [56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,
6.86,6.58,6.23]
'''from matplotlib import pyplot as plt
from matplotlib import font_managerfont = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)x =["流浪地球","復仇者聯盟4:\n終局之戰","哪吒之\n魔童降世","瘋狂的外星人","飛馳人生","蜘蛛俠:\n英雄遠征","掃毒2\n天地對決","烈火英雄","大黃蜂","驚奇隊長","比悲傷更悲\n傷的故事","哥斯拉2:\n怪獸之王","阿麗塔:\n戰斗天使","銀河補習班","獅子王","反貪風暴4","熊出沒","大偵探皮卡丘","新喜劇之王","使徒行者2:\n諜影行動"]
y =[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23]# print(len(x),len(y))# 設置圖片大小
plt.figure(figsize=(15,8),dpi=80)# 繪制條形圖
plt.bar(x,y)# 設置x軸刻度# 0 - 19
plt.xticks(range(len(x)),x,fontproperties=font,rotation=45)plt.show()# 效果如下圖
2.2繪制橫向條形圖 使用的方法:barh(x,y)
把x軸橫過來:查看源碼,** def barh(self, y, width, height=0.8, left=None, *, align=“center”, kwargs): r""" Make a horizontal bar plot.
"""
直方圖示例
250部電影時長
"""# import randomfrom matplotlib import pyplot as plt# a = [random.randint(78,150) for i in range(250)] # 隨機獲取250個time# print(a)
a =[132,114,149,127,114,83,101,98,147,78,95,129,98,93,102,131,83,123,100,93,83,88,138,119,145,121,136,87,94,86,85,112,80,143,107,116,123,124,139,104,102,104,113,121,107,80,141,86,103,119,142,131,93,101,92,81,137,138,144,79,121,79,116,143,89,82,133,87,96,140,139,104,121,84,107,93,141,119,90,132,85,139,142,126,106,138,141,116,105,143,91,116,106,134,137,144,96,112,133,150,95,96,137,79,94,116,118,105,101,87,96,82,97,90,79,91,93,93,98,114,138,80,139,108,97,143,142,97,117,92,135,118,97,137,146,144,146,107,85,145,128,78,132,142,83,111,88,106,142,128,150,116,97,113,100,130,79,149,84,104,96,94,103,105,123,113,96,95,103,126,134,123,149,140,114,116,99,97,119,93,91,120,104,98,78,124,139,106,119,141,91,136,97,107,102,95,118,93,134,142,90,84,90,149,105,112,135,93,100,149,148,136,126,88,148,113,81,86,117,145,109,120,89,103,82,112,78,125,105,132,108,105,102,95,148,111,79,88,87,97,88,83,110,145,101,138,102,92,83,83]# 組距
d =3# 組數
num =(max(a)-min(a))// d
# print(num) # 24# 圖像大小
plt.figure(figsize=(15,8),dpi=80)# 頻數直方圖 num還可以傳一個列表,比如num = [i for i in range(78,160,4)]
plt.hist(a,num)# num = [i for i in range(78,160,4)] # 設置頻數直方圖傳入列表參數# plt.hist(a,num,density=True) # 設置頻數直方圖修改默認參數# 設置x軸刻度
plt.xticks(range(min(a),max(a)+d,d))# 78 81 84...150# y軸表示在某個時長內有多少部電影# 設置網格
plt.grid()plt.show()
頻率圖代碼、效果如下:
"""
直方圖示例
250部電影時長
"""from matplotlib import pyplot as plt
a =[132,114,149,127,114,83,101,98,147,78,95,129,98,93,102,131,83,123,100,93,83,88,138,119,145,121,136,87,94,86,85,112,80,143,107,116,123,124,139,104,102,104,113,121,107,80,141,86,103,119,142,131,93,101,92,81,137,138,144,79,121,79,116,143,89,82,133,87,96,140,139,104,121,84,107,93,141,119,90,132,85,139,142,126,106,138,141,116,105,143,91,116,106,134,137,144,96,112,133,150,95,96,137,79,94,116,118,105,101,87,96,82,97,90,79,91,93,93,98,114,138,80,139,108,97,143,142,97,117,92,135,118,97,137,146,144,146,107,85,145,128,78,132,142,83,111,88,106,142,128,150,116,97,113,100,130,79,149,84,104,96,94,103,105,123,113,96,95,103,126,134,123,149,140,114,116,99,97,119,93,91,120,104,98,78,124,139,106,119,141,91,136,97,107,102,95,118,93,134,142,90,84,90,149,105,112,135,93,100,149,148,136,126,88,148,113,81,86,117,145,109,120,89,103,82,112,78,125,105,132,108,105,102,95,148,111,79,88,87,97,88,83,110,145,101,138,102,92,83,83]# 組距
d =3# 組數
num =(max(a)-min(a))// d
# print(num) # 24# 圖像大小
plt.figure(figsize=(15,8),dpi=80)# 頻數直方圖 num還可以傳一個列表,比如num = [i for i in range(78,160,4)]num =[i for i inrange(78,160,4)]# 設置頻數直方圖傳入列表參數
plt.hist(a,num,density=True)# 設置頻數直方圖修改默認參數# 設置x軸刻度
plt.xticks(range(min(a),max(a)+d,d))# 78 81 84...150# y軸表示在某個時長內有多少部電影# 設置網格
plt.grid()plt.show()
4.繪制餅圖
plt.pie() 繪制餅圖 練習:統計5個國家每年人口的變化情況
# 練習:統計5個國家每年人口的變化情況from matplotlib import pyplot as plt
import pandas as pdfile_path ='./population_data.json'
df = pd.read_json(file_path)# print(df.info())'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 12407 entries, 0 to 12406
Data columns (total 4 columns):# Column Non-Null Count Dtype
--- ------ -------------- ----- 0 Country Name 12407 non-null object 1 Country Code 12407 non-null object 2 Year 12407 non-null int64 3 Value 12407 non-null float64
dtypes: float64(1), int64(1), object(2)
memory usage: 387.8+ KB
None'''# print(df.head())'''Country Name Country Code Year Value
0 Arab World ARB 1960 96388069.0
1 Arab World ARB 1961 98882541.4
2 Arab World ARB 1962 101474075.8
3 Arab World ARB 1963 104169209.2
4 Arab World ARB 1964 106978104.6'''# 透視表
population_data = df.pivot_table(index='Country Name',columns='Year',values='Value')# print(population_data.head())'''
Year 1960 1961 ... 2009 2010
Country Name ...
Afghanistan 9671046.0 9859928.0 ... 3.343833e+07 34385000.0
Albania 1610565.0 1661158.0 ... 3.192723e+06 3205000.0
Algeria 10799997.0 11006643.0 ... 3.495017e+07 35468000.0
American Samoa 20041.0 20500.0 ... 6.731200e+04 68420.0
Andorra 13377.0 14337.0 ... 8.367700e+04 84864.0[5 rows x 51 columns]'''
plt.figure(figsize=(15,8),dpi=80)# countries = df.iloc[:,0].drop_duplicates()# print(list(countries))'''['Arab World', 'Caribbean small states', 'East Asia & Pacific (all income levels)', 'East Asia & Pacific (
developing only)', 'Euro area', 'Europe & Central Asia (all income levels)', 'Europe & Central Asia (developing
only)', 'European Union', 'Heavily indebted poor countries (HIPC)', 'High income', 'High income: nonOECD',
'High income: OECD', 'Latin America & Caribbean (all income levels)', 'Latin America & Caribbean (developing only)',
'Least developed countries: UN classification', 'Low & middle income', 'Low income', 'Lower middle income',
'Middle East & North Africa (all income levels)', 'Middle East & North Africa (developing only)', 'Middle income',
'North America', 'OECD members', 'Other small states', 'Pacific island small states', 'Small states', 'South Asia',
'Sub-Saharan Africa (all income levels)', 'Sub-Saharan Africa (developing only)', 'Upper middle income', 'World',
'Afghanistan', 'Albania', 'Algeria', 'American Samoa', 'Andorra', 'Angola', 'Antigua and Barbuda', 'Argentina',
'Armenia', 'Aruba', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas, The', 'Bahrain', 'Bangladesh', 'Barbados',
'Belarus', 'Belgium', 'Belize', 'Benin', 'Bermuda', 'Bhutan', 'Bolivia', 'Bosnia and Herzegovina', 'Botswana',
'Brazil', 'Brunei Darussalam', 'Bulgaria', 'Burkina Faso', 'Burundi', 'Cambodia', 'Cameroon', 'Canada', 'Cape Verde',
'Cayman Islands', 'Central African Republic', 'Chad', 'Channel Islands', 'Chile', 'China', 'Colombia', 'Comoros',
'Congo, Dem. Rep.', 'Congo, Rep.', 'Costa Rica', "Cote d'Ivoire", 'Croatia', 'Cuba', 'Curacao', 'Cyprus',
'Czech Republic', 'Denmark', 'Djibouti', 'Dominica', 'Dominican Republic', 'Ecuador', 'Egypt, Arab Rep.',
'El Salvador', 'Equatorial Guinea', 'Eritrea', 'Estonia', 'Ethiopia', 'Faeroe Islands', 'Fiji', 'Finland', 'France',
'French Polynesia', 'Gabon', 'Gambia, The', 'Georgia', 'Germany', 'Ghana', 'Gibraltar', 'Greece', 'Greenland',
'Grenada', 'Guam', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Honduras', 'Hong Kong SAR, China',
'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran, Islamic Rep.', 'Iraq', 'Ireland', 'Isle of Man', 'Israel',
'Italy', 'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kiribati', 'Korea, Dem. Rep.', 'Korea, Rep.',
'Kosovo', 'Kuwait', 'Kyrgyz Republic', 'Lao PDR', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libya',
'Liechtenstein', 'Lithuania', 'Luxembourg', 'Macao SAR, China', 'Macedonia, FYR', 'Madagascar', 'Malawi', 'Malaysia',
'Maldives', 'Mali', 'Malta', 'Marshall Islands', 'Mauritania', 'Mauritius', 'Mayotte', 'Mexico', 'Micronesia,
Fed. Sts.', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Morocco', 'Mozambique', 'Myanmar', 'Namibia', 'Nepal',
'Netherlands', 'New Caledonia', 'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 'Northern Mariana Islands', 'Norway',
'Oman', 'Pakistan', 'Palau', 'Panama', 'Papua New Guinea', 'Paraguay', 'Peru', 'Philippines', 'Poland', 'Portugal',
'Puerto Rico', 'Qatar', 'Romania', 'Russian Federation', 'Rwanda', 'Samoa', 'San Marino', 'Sao Tome and Principe',
'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Sint Maarten (Dutch part)',
'Slovak Republic', 'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 'Spain', 'Sri Lanka', 'St. Kitts and
Nevis', 'St. Lucia', 'St. Martin (French part)', 'St. Vincent and the Grenadines', 'Sudan', 'Suriname', 'Swaziland',
'Sweden', 'Switzerland', 'Syrian Arab Republic', 'Tajikistan', 'Tanzania', 'Thailand', 'Timor-Leste', 'Togo',
'Tonga', 'Trinidad and Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Turks and Caicos Islands', 'Tuvalu', 'Uganda',
'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Venezuela,
RB', 'Vietnam', 'Virgin Islands (U.S.)', 'West Bank and Gaza', 'Yemen, Rep.', 'Zambia', 'Zimbabwe'] '''
country_list =['China','Australia','Germany','Brazil','Japan']
country_data = population_data.loc[country_list]# print(country_data)'''
Year 1960 1961 ... 2009 2010
Country Name ...
China 667070000.0 660330000.0 ... 1.331380e+09 1.338300e+09
Australia 10276477.0 10483000.0 ... 2.195170e+07 2.229900e+07
Germany 72814900.0 73377632.0 ... 8.190231e+07 8.177700e+07
Brazil 72758801.0 74975656.0 ... 1.932466e+08 1.949460e+08
Japan 92500572.0 94943000.0 ... 1.275580e+08 1.274510e+08[5 rows x 51 columns]
'''# country_data = population_data.loc[country_list].iloc[:,-1] #也可以
country_data = population_data.loc[country_list][2010]print(country_data)'''
Country Name
China 1.338300e+09
Australia 2.229900e+07
Germany 8.177700e+07
Brazil 1.949460e+08
Japan 1.274510e+08
Name: 2010, dtype: float64
'''# labels 標簽 autopct='%1.2f%%' 百分比 shadow=True 顯示陰影 explode部分抽出
plt.pie(country_data.values,labels=country_data.index,autopct='%1.2f%%',shadow=True,explode=[0,0,0,0,0.2])
plt.show()