话不多说就开始吧!

import pandas as pd
# 读入 csv 文字档
gapminder = pd.read_csv('gapminder.csv')
# 读取excel档 gapminder = pd.read_excel(xlsx_file)
print(type(gapminder))
gapminder.head()
<class 'pandas.core.frame.DataFrame'>
country continent year lifeExp pop gdpPercap
0 Afghanistan Asia 1952 28.801 8425333 779.445314
1 Afghanistan Asia 1957 30.332 9240934 820.853030
2 Afghanistan Asia 1962 31.997 10267083 853.100710
3 Afghanistan Asia 1967 34.020 11537966 836.197138
4 Afghanistan Asia 1972 36.088 13079460 739.981106
gapminder.shape # 查看 DataFrame有几行几列
(1704, 6)
gapminder.columns # 查看 DataFrame 的变数函数
Index(['country', 'continent', 'year', 'lifeExp', 'pop', 'gdpPercap'], dtype='object')
gapminder.index # 查看 DataFrame 的列索引信息
RangeIndex(start=0, stop=1704, step=1)
gapminder.info() # 查看 DataFrame 的详细信息
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1704 entries, 0 to 1703
Data columns (total 6 columns):
country      1704 non-null object
continent    1704 non-null object
year         1704 non-null int64
lifeExp      1704 non-null float64
pop          1704 non-null int64
gdpPercap    1704 non-null float64
dtypes: float64(2), int64(2), object(2)
memory usage: 80.0+ KB
gapminder.describe() # 查看 DataFrame 各变量的描述统计
year lifeExp pop gdpPercap
count 1704.00000 1704.000000 1.704000e+03 1704.000000
mean 1979.50000 59.474439 2.960121e+07 7215.327081
std 17.26533 12.917107 1.061579e+08 9857.454543
min 1952.00000 23.599000 6.001100e+04 241.165877
25% 1965.75000 48.198000 2.793664e+06 1202.060309
50% 1979.50000 60.712500 7.023596e+06 3531.846989
75% 1993.25000 70.845500 1.958522e+07 9325.462346
max 2007.00000 82.603000 1.318683e+09 113523.132900

数据整理

dplyr的基本功能是六个能与SQL查询语法相互呼应的函数:

filter()函数:SQL查询中的where描述

select()函数:SQL查询中的select描述

mutate()函数:SQL查询中的衍生字段描述

arrange()函数:SQL查询中的order by描述

summarise()函数:SQL查询中的聚合函数描述

group_by()函数:SQL查询中的group by描述

# 撰写布尔判断条件将符合条件的观测值从数据框中筛选出,
# 实践filter()函数的功能,例如选出China:
gapminder[gapminder['country'] == 'China']
country continent year lifeExp pop gdpPercap
288 China Asia 1952 44.00000 556263527 400.448611
289 China Asia 1957 50.54896 637408000 575.987001
290 China Asia 1962 44.50136 665770000 487.674018
291 China Asia 1967 58.38112 754550000 612.705693
292 China Asia 1972 63.11888 862030000 676.900092
293 China Asia 1977 63.96736 943455000 741.237470
294 China Asia 1982 65.52500 1000281000 962.421380
295 China Asia 1987 67.27400 1084035000 1378.904018
296 China Asia 1992 68.69000 1164970000 1655.784158
297 China Asia 1997 70.42600 1230075000 2289.234136
298 China Asia 2002 72.02800 1280400000 3119.280896
299 China Asia 2007 72.96100 1318683096 4959.114854
# 如果有多个条件,可以使用|或&amp;符号连接,例如选出2007年的亚洲国家(用.iloc选择显示前几行):
gapminder[(gapminder['year'] == 2007) & (gapminder['continent'] == 'Asia')].iloc[0:10,]
country continent year lifeExp pop gdpPercap
11 Afghanistan Asia 2007 43.828 31889923 974.580338
95 Bahrain Asia 2007 75.635 708573 29796.048340
107 Bangladesh Asia 2007 64.062 150448339 1391.253792
227 Cambodia Asia 2007 59.723 14131858 1713.778686
299 China Asia 2007 72.961 1318683096 4959.114854
671 Hong Kong, China Asia 2007 82.208 6980412 39724.978670
707 India Asia 2007 64.698 1110396331 2452.210407
719 Indonesia Asia 2007 70.650 223547000 3540.651564
731 Iran Asia 2007 70.964 69453570 11605.714490
743 Iraq Asia 2007 59.545 27499638 4471.061906
# 用list标注变数名称,可以将所需变数的一列提取出来
gapminder[['country', 'continent']].iloc[0:10,]
country continent
0 Afghanistan Asia
1 Afghanistan Asia
2 Afghanistan Asia
3 Afghanistan Asia
4 Afghanistan Asia
5 Afghanistan Asia
6 Afghanistan Asia
7 Afghanistan Asia
8 Afghanistan Asia
9 Afghanistan Asia
# 直接撰写衍生公式并为变数命名即可实践mutate()函数的功能,搭配apply()与lambda函数将公式应用到每一个观测值,
# 例如新增一个country_abb变数撷取原本country变数的前三个英文字母:
gapminder['country_abb'] = gapminder['country'].apply(lambda x: x[:3])
gapminder.iloc[1:10,]
country continent year lifeExp pop gdpPercap country_abb
1 Afghanistan Asia 1957 30.332 9240934 820.853030 Afg
2 Afghanistan Asia 1962 31.997 10267083 853.100710 Afg
3 Afghanistan Asia 1967 34.020 11537966 836.197138 Afg
4 Afghanistan Asia 1972 36.088 13079460 739.981106 Afg
5 Afghanistan Asia 1977 38.438 14880372 786.113360 Afg
6 Afghanistan Asia 1982 39.854 12881816 978.011439 Afg
7 Afghanistan Asia 1987 40.822 13867957 852.395945 Afg
8 Afghanistan Asia 1992 41.674 16317921 649.341395 Afg
9 Afghanistan Asia 1997 41.763 22227415 635.341351 Afg
# 呼叫DataFrame不同的聚合函数针对字段计算,实践summarise()函数的功能,例如计算2007年全球人口总数:
gapminder[gapminder['year'] == 2007][['pop']].sum()
pop    6251013179
dtype: int64
# 或者计算 2007 年全球的平均寿命、平均财富:
gapminder[gapminder['year'] == 2007][['lifeExp', 'gdpPercap']].mean()
lifeExp         67.007423
gdpPercap    11680.071820
dtype: float64
# 最后用 DataFrame的 groupby 方法实践 group_by()函数的功能,例如计算2007年各洲人口总数:
gapminder[gapminder['year'] == 2007].groupby(by = 'continent')['pop'].sum()
continent
Africa       929539692
Americas     898871184
Asia        3811953827
Europe       586098529
Oceania       24549947
Name: pop, dtype: int64
# 或者计算2007年各洲平均寿命、平均财富:
gapminder[gapminder['year'] == 2007].groupby(by = 'continent')['lifeExp', 'gdpPercap'].mean()
lifeExp gdpPercap
continent
Africa 54.806038 3089.032605
Americas 73.608120 11003.031625
Asia 70.728485 12473.026870
Europe 77.648600 25054.481636
Oceania 80.719500 29810.188275

Python可视化的基石是Matplotlib套件的pyplot,她的绘图哲学是将图形的元素,例如坐标轴、线、点或者文字用不同的方法一一拼凑起来,优点是绘图的弹性非常高,缺点则是对于初学者的门坎略高。为了解决这个问题,pandas套件将matplotlib.pyplot的基础图形包装起来成为一个方法,让使用者只要呼叫df.plot()就能够便利地绘图,可以选择的图形种类相当丰富,只要指定kind =参数即可:
line’:线图(预设)
‘bar’:垂直直方图
‘barh’:水平直方图
‘hist’:直方图
‘box’:盒须图
‘scatter’:散布图
‘hexbin’:hexbin plot
…etc.
在作图之前我们加载matplotlib.pyplot与seaborn,前者是绘图的基础套件,后者是让图形的样式美观:

import matplotlib.pyplot as plt
import seaborn as sns# 可视化时间与数值:线图
# 将中国数据筛选出来并绘制从1952年至2007年的人口变化:gapminder_cn = gapminder[gapminder['country'] == 'China']
gapminder_cn[['year', 'pop']].plot(kind = 'line', x = 'year', y = 'pop', title = 'Pop vs. Year in China')
plt.show()

# 或者将中国、日本、韩国数据筛选出来并绘制从1952年至2007年的平均寿命变化gapminder_northasia = gapminder.loc[gapminder['country'].isin(['China', 'Japan', 'Korea, Rep.'])]
gapminder_northasia_pivot = gapminder_northasia.pivot_table(values = 'lifeExp', columns = 'country', index = 'year')
gapminder_northasia_pivot.plot(title = 'Life Expectancies in North Asia')
plt.show()

# 可视化数值的分布:直方图、盒须图
# 将2007年数据筛选出来并以三个子图(subplots)绘制人口数、平均寿命与人均所得的直方图:gapminder_2007 = gapminder[gapminder['year'] == 2007]
gapminder_2007[['pop', 'gdpPercap', 'lifeExp']].hist(bins = 15)
plt.show()

# 或者绘制人均所得的直方图:
gapminder_2007[['gdpPercap']].plot(kind = 'hist', title = 'GDP Per Capita in 2007', legend = False, bins = 15)
plt.show()

# 或者将人均所得直方图依照不同洲别以不同颜色绘制:
gapminder_continent_pivot = gapminder_2007.pivot_table(values = 'gdpPercap', columns = 'continent', index = 'country')
gapminder_continent_pivot.plot(kind = 'hist', alpha=0.5, bins = 20, title = 'GDP Per Capita by Continent')
plt.show()

# 或者依照不同洲别,将人均所得以盒须图绘制
gapminder_continent_pivot.plot(kind = 'box', title = 'GDP Per Capita by Continent')
plt.show()

# 可视化相关性:散点图、hexbin plot
gapminder_2007.plot(kind = 'scatter', x = 'gdpPercap', y = 'lifeExp', title = 'Wealth vs. Health in 2007')
plt.show()
# 改为hexbin plot
gapminder_2007.plot(kind = 'hexbin', x = 'gdpPercap', y = 'lifeExp', title = 'Wealth vs. Health in 2007', gridsize = 20)
plt.show()

# 可视化排名:直方图
# 绘制2007年各洲的人口总数:
summarized_df = gapminder[gapminder['year'] == 2007].groupby(by = 'continent')['pop'].sum()
summarized_df.plot(kind = 'bar', rot = 0)
plt.show()

# 或者绘制2007年各洲平均寿命、平均财富:
mean_df = gapminder[gapminder['year'] == 2007].groupby('continent')['lifeExp','gdpPercap'].mean()
mean_df = mean_df.reset_index()mean_df.head()
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(mean_df['continent'], mean_df['lifeExp'], '-', label = 'lifeExp')
ax2 = ax.twinx()
ax2.plot(mean_df['continent'], mean_df['gdpPercap'], '-r', label = 'gdpPercap')
ax.set_ylim(40,100)
ax2.set_ylim(0, 50000)
ax.legend(loc='upper left')
ax2.legend(loc='upper right')
plt.show()

panda开始python的数据科学相关推荐

  1. 为什么Python在数据科学领域比R更受欢迎呢?

    2020-02-16 12:32:00 全文共2256字,预计学习时长7分钟 来源:aliyun 新入门的数据科学家都面临一个非常重要的问题:我应该学习Python还是R? 这个问题非常重要,因为学习 ...

  2. 为什么说Python是数据科学领域的最佳语言?

    人人都说Python好,但Python究竟有多大的魔力能够如此备受欢迎? 近日,TIOBE 最新一期编程语言排行榜新鲜出炉,Python再次位居榜首.作为时下最火的编程语言,Python可以说是应用极 ...

  3. 用python 入门数据科学_如何高效入门数据科学?

    链接散落的教程文章,做个详细的导读,助你更高效入门数据科学. 问题 2017年6月以来,我陆续在自己的简书专栏<玉树芝兰>里,写了一系列数据科学教程. 这源于一次研究生课编程工作坊尝试.受 ...

  4. Python的数据科学函数包(三)——matplotlib(plt)

    Matplotlib是Python最著名的2D绘图库 c opencv要比PIL, plt的速度更快一些 matplotlib中一张图的具体构造 如果将Matplotlib绘图和我们平常画画相类比,可 ...

  5. python怎么重新开始_人人都是数据科学家从新开始用Python学习数据科学的完整教程P3...

    上周一P2篇大家熟悉一些有用的库来学习Python.P3篇让我们学习如何用Pandas在Python中进行探索型数据分析. 为了进一步探索我们的数据,让我向您介绍另一种动物(好像Python还不够!) ...

  6. 为什么Python是数据科学领域最受欢迎的语言

    为什么大多数数据科学家都喜欢Python?这篇文章会让你了解到,Python有很多完善的工具包可以协助你完成重要的数据科学任务. 根据Indeed,Glassdoor和Dice等职场网站所提供的信息, ...

  7. usagestatsmanager获取正在运行应用_用Python构建数据科学Web应用程序

    在本文中,我将向你展示如何使用streamlit python库快速构建一个简单的数据驱动web应用程序,只需几行代码. 作为一名数据科学家或机器学习工程师,能够部署我们的数据科学项目是很重要的.传统 ...

  8. python 搭建web应用程序_用Python构建数据科学Web应用程序

    作者|Chanin Nantasenamat 编译|VK 来源|Towards Data Science 在本文中,我将向你展示如何使用streamlit python库快速构建一个简单的数据驱动we ...

  9. 数据科学 python_如何使用Python为数据科学建立肌肉记忆

    数据科学 python by Zhen Liu 刘震 首先:数据预处理 (Up first: data preprocessing) Do you feel frustrated by breakin ...

最新文章

  1. VOC2012 分割数据 转 lmdb 格式 python 代码
  2. SQL Server pivot行列转换案例分析
  3. Java成神之路技术整理
  4. project 模板_施工进度横道图不会做?18份计划模板收藏好,输入参数迅速成图...
  5. leetcode209. 长度最小的子数组 借这个题规范一下双指针写法
  6. 【Linux】Linux简介以及 与UNIX区别
  7. c语言期末考试复习题,C语言期末考试复习资料 计算机等级考试复习题目
  8. CBD将建智慧城市管理平台
  9. 【HDU3336】Count the String(kmp--每个前缀出现的次数)
  10. Linux内核API手册——简略版
  11. flashfxp连接失败,flashfxp连接失败怎么办
  12. build Variants创建不同配置的app(图文详解)
  13. 网络三维虚拟展馆开发优势
  14. python进行对应分析_对应分析
  15. 企业微信实现扫码登录
  16. C++流式输入输出加速 给 cin/cout 装个小火箭
  17. Android才是游戏开发者的乐土
  18. 不可不说的Java“锁”事 - 美团技术团队
  19. 液压钳power tong
  20. 北京赞同科技发展有限公司产品开发部招聘高级软件工程师及产品经理

热门文章

  1. a标签 rel=‘nofollow‘
  2. 微信购物直播商城渠道定制开发
  3. 家乐福618安全与性能保卫战(一)-安全高地保卫战
  4. 华为Nova10Pro、小米12Pro和vivoS15Pro的区别 哪个好
  5. 二、树莓派RGB LED实验
  6. 曹图强:思科正成为全数字化转型基石
  7. java web西蒙购物网 ——测试(test)
  8. 用科技赋能教育创新与重构 华为将教育信息化落到实处
  9. 码云的首次使用—将本地项目上传到码云
  10. 远程桌面显示无法全屏问题解决