系列文章
手把手教你数据分析(1)--Pandas读取Excel信息
手把手教你数据分析(2)--缺失值处理
手把手教你数据分析(3)--数据可视化
00准备工作:
素材:一份全国各省市市委书记数据表.xls
(链接: https://pan.baidu.com/s/1gbgvcLbfEMM-9hFCZw1VlQ 密码: p66u)
编程环境:mac + anaconda + jupyter notebook + python3.6
目录:
01 使用pandas提取数据表中的数据进行分析
01 python环境安装
请参考python爬虫实战(1) -- 抓取boss直聘招聘信息
02 pandas操作小试牛刀
先将.xls文件保存为.csv格式,这个格式才能被python调用
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)
主要包含的几个命令
读取csv数据 pd.read_csv("路径",encoding='utf-8')
print(data.head(10))
print(data[10:20])
print(data['某一列列名'])
print(data[["列1","列2","列3"]])
打印所有表头,就是所有列名 print(data.colums.tolist())
打印第四行,print(data.loc[4])
打印表的基础数据 print(data.describe()) 默认打印数值类型的
打印表的字符串类型基础数据 print(data.describe(include=[np.object]))
P.S.
jupyter notebook中,table键可以自动补全
下面直接贴代码了,数量有些多,请细心查看
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv("/Users/limingxuan/Documents/GitHub/py05_DataAnalysisWeizhuanye/数据资料/地市级党委书记数据库(2000-10).csv",encoding = "utf-8")
#打印前10行数据
print(data.head(10))
省级政区代码 省级政区名称 地市级政区代码 地市级政区名称 年份 党委书记姓名 出生年份 出生月份 籍贯省份代码 籍贯省份名称 \
0 130000 河北省 130100 石家庄市 2000 陈来立 NaN NaN NaN NaN
1 130000 河北省 130100 石家庄市 2001 吴振华 NaN NaN NaN NaN
2 130000 河北省 130100 石家庄市 2002 吴振华 NaN NaN NaN NaN
3 130000 河北省 130100 石家庄市 2003 吴振华 NaN NaN NaN NaN
4 130000 河北省 130100 石家庄市 2004 吴振华 NaN NaN NaN NaN
5 130000 河北省 130100 石家庄市 2005 吴振华 NaN NaN NaN NaN
6 130000 河北省 130100 石家庄市 2006 吴振华 NaN NaN NaN NaN
7 130000 河北省 130100 石家庄市 2007 吴显国 NaN NaN NaN NaN
8 130000 河北省 130100 石家庄市 2008 吴显国 NaN NaN NaN NaN
9 130000 河北省 130100 石家庄市 2009 车俊 NaN NaN NaN NaN
... 民族 教育 是否是党校教育(是=1,否=0) 专业:人文 专业:社科 专业:理工 专业:农科 专业:医科 入党年份 工作年份
0 ... NaN 硕士 1.0 NaN NaN NaN NaN NaN NaN NaN
1 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN NaN
2 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN NaN
3 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN NaN
4 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN NaN
5 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN NaN
6 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN NaN
7 ... NaN 硕士 1.0 0.0 1.0 0.0 0.0 0.0 NaN NaN
8 ... NaN 硕士 1.0 0.0 1.0 0.0 0.0 0.0 NaN NaN
9 ... NaN 本科 1.0 0.0 1.0 0.0 0.0 0.0 NaN NaN
[10 rows x 23 columns]
#打印[10-20)行数据
print(data[10:20])
省级政区代码 省级政区名称 地市级政区代码 地市级政区名称 年份 党委书记姓名 出生年份 出生月份 籍贯省份代码 籍贯省份名称 \
10 130000 河北省 130100 石家庄市 2010 孙瑞彬 NaN NaN NaN NaN
11 130000 河北省 130200 唐山市 2000 白润璋 NaN NaN NaN NaN
12 130000 河北省 130200 唐山市 2001 白润璋 NaN NaN NaN NaN
13 130000 河北省 130200 唐山市 2002 白润璋 NaN NaN NaN NaN
14 130000 河北省 130200 唐山市 2003 张和 NaN NaN NaN NaN
15 130000 河北省 130200 唐山市 2004 张和 NaN NaN NaN NaN
16 130000 河北省 130200 唐山市 2005 张和 NaN NaN NaN NaN
17 130000 河北省 130200 唐山市 2006 张和 NaN NaN NaN NaN
18 130000 河北省 130200 唐山市 2007 赵勇 NaN NaN NaN NaN
19 130000 河北省 130200 唐山市 2008 赵勇 NaN NaN NaN NaN
... 民族 教育 是否是党校教育(是=1,否=0) 专业:人文 专业:社科 专业:理工 专业:农科 专业:医科 入党年份 \
10 ... NaN 硕士 1.0 0.0 1.0 0.0 0.0 0.0 NaN
11 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN
12 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN
13 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN
14 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN
15 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN
16 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN
17 ... NaN 本科 0.0 0.0 0.0 1.0 0.0 0.0 NaN
18 ... NaN 博士 0.0 0.0 1.0 0.0 0.0 0.0 NaN
19 ... NaN 博士 0.0 0.0 1.0 0.0 0.0 0.0 NaN
工作年份
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
15 NaN
16 NaN
17 NaN
18 NaN
19 NaN
[10 rows x 23 columns]
#根据列名,打印某一列数据
print(data['党委书记姓名'])
0 陈来立
1 吴振华
2 吴振华
3 吴振华
4 吴振华
5 吴振华
6 吴振华
7 吴显国
8 吴显国
9 车俊
10 孙瑞彬
11 白润璋
12 白润璋
13 白润璋
14 张和
15 张和
16 张和
17 张和
18 赵勇
19 赵勇
20 赵勇
21 赵勇
22 王建忠
23 王建忠
24 王建忠
25 宋长瑞
26 宋长瑞
27 宋长瑞
28 宋长瑞
29 王三堂
...
3633 NaN
3634 NaN
3635 NaN
3636 NaN
3637 NaN
3638 NaN
3639 NaN
3640 NaN
3641 NaN
3642 NaN
3643 NaN
3644 NaN
3645 NaN
3646 NaN
3647 NaN
3648 NaN
3649 NaN
3650 NaN
3651 NaN
3652 NaN
3653 NaN
3654 NaN
3655 NaN
3656 NaN
3657 NaN
3658 NaN
3659 NaN
3660 NaN
3661 NaN
3662 NaN
Name: 党委书记姓名, Length: 3663, dtype: object
#查看所有字段
field = data.columns.tolist()
print(field)
['省级政区代码', '省级政区名称', '地市级政区代码', '地市级政区名称', '年份', '党委书记姓名', '出生年份', '出生月份', '籍贯省份代码', '籍贯省份名称', '籍贯地市代码', '籍贯地市名称', '性别', '民族', '教育', '是否是党校教育(是=1,否=0)', '专业:人文', '专业:社科', '专业:理工', '专业:农科', '专业:医科', '入党年份', '工作年份']
#只显示第四行
print(data.loc[4])
省级政区代码 130000
省级政区名称 河北省
地市级政区代码 130100
地市级政区名称 石家庄市
年份 2004
党委书记姓名 吴振华
出生年份 NaN
出生月份 NaN
籍贯省份代码 NaN
籍贯省份名称 NaN
籍贯地市代码 NaN
籍贯地市名称 NaN
性别 NaN
民族 NaN
教育 本科
是否是党校教育(是=1,否=0) 0
专业:人文 0
专业:社科 0
专业:理工 1
专业:农科 0
专业:医科 0
入党年份 NaN
工作年份 NaN
Name: 4, dtype: object
#打印多个列数据,需要双层[[]]
print(data[["党委书记姓名","年份","教育"]])
党委书记姓名 年份 教育
0 陈来立 2000 硕士
1 吴振华 2001 本科
2 吴振华 2002 本科
3 吴振华 2003 本科
4 吴振华 2004 本科
5 吴振华 2005 本科
6 吴振华 2006 本科
7 吴显国 2007 硕士
8 吴显国 2008 硕士
9 车俊 2009 本科
10 孙瑞彬 2010 硕士
11 白润璋 2000 本科
12 白润璋 2001 本科
13 白润璋 2002 本科
14 张和 2003 本科
15 张和 2004 本科
16 张和 2005 本科
17 张和 2006 本科
18 赵勇 2007 博士
19 赵勇 2008 博士
20 赵勇 2009 博士
21 赵勇 2010 博士
22 王建忠 2000 本科
23 王建忠 2001 本科
24 王建忠 2002 本科
25 宋长瑞 2003 硕士
26 宋长瑞 2004 硕士
27 宋长瑞 2005 硕士
28 宋长瑞 2006 硕士
29 王三堂 2007 硕士
... ... ... ...
3633 NaN 2003 NaN
3634 NaN 2004 NaN
3635 NaN 2005 NaN
3636 NaN 2006 NaN
3637 NaN 2007 NaN
3638 NaN 2008 NaN
3639 NaN 2009 NaN
3640 NaN 2010 NaN
3641 NaN 2000 NaN
3642 NaN 2001 NaN
3643 NaN 2002 NaN
3644 NaN 2003 NaN
3645 NaN 2004 NaN
3646 NaN 2005 NaN
3647 NaN 2006 NaN
3648 NaN 2007 NaN
3649 NaN 2008 NaN
3650 NaN 2009 NaN
3651 NaN 2010 NaN
3652 NaN 2000 NaN
3653 NaN 2001 NaN
3654 NaN 2002 NaN
3655 NaN 2003 NaN
3656 NaN 2004 NaN
3657 NaN 2005 NaN
3658 NaN 2006 NaN
3659 NaN 2007 NaN
3660 NaN 2008 NaN
3661 NaN 2009 NaN
3662 NaN 2010 NaN
[3663 rows x 3 columns]
#查看基础数据
#mean = 均值
#std = 方差
print(data.describe())#只针对数值型
#()中没有任何参数时,会默认只统计数值类型的字段内容 等同于 data.describe(include = np.object[np.number])
省级政区代码 地市级政区代码 年份 出生年份 出生月份 \
count 3663.000000 3663.000000 3663.000000 2676.000000 2645.000000
mean 403393.393393 404456.756757 2005.000000 1953.622571 6.790548
std 148176.721620 148485.810327 3.162709 4.416316 3.614664
min 130000.000000 130100.000000 2000.000000 1941.000000 1.000000
25% 330000.000000 330100.000000 2002.000000 1951.000000 3.000000
50% 420000.000000 420200.000000 2005.000000 1954.000000 7.000000
75% 510000.000000 513400.000000 2008.000000 1956.000000 10.000000
max 650000.000000 654300.000000 2010.000000 1966.000000 14.000000
籍贯省份代码 籍贯地市代码 是否是党校教育(是=1,否=0) 专业:人文 \
count 2624.000000 2615.000000 2493.000000 2370.000000
mean 364428.353659 365742.332696 0.430405 0.275527
std 126267.485520 125961.993399 0.576136 0.446874
min 110000.000000 120000.000000 0.000000 0.000000
25% 320000.000000 320700.000000 0.000000 0.000000
50% 370000.000000 370700.000000 0.000000 0.000000
75% 430000.000000 431300.000000 1.000000 1.000000
max 640000.000000 640500.000000 9.000000 1.000000
专业:社科 专业:理工 专业:农科 专业:医科 入党年份 \
count 2376.000000 2371.000000 2369.000000 2370.000000 2384.000000
mean 0.627525 0.256854 0.067539 0.009705 1976.906879
std 0.483566 0.436990 0.251006 0.098054 5.310080
min 0.000000 0.000000 0.000000 0.000000 1961.000000
25% 0.000000 0.000000 0.000000 0.000000 1973.000000
50% 1.000000 0.000000 0.000000 0.000000 1976.000000
75% 1.000000 1.000000 0.000000 0.000000 1981.000000
max 1.000000 1.000000 1.000000 1.000000 1994.000000
工作年份
count 2568.000000
mean 1973.129673
std 4.856564
min 1958.000000
25% 1970.000000
50% 1972.500000
75% 1976.000000
max 1990.000000
#显示字符串的统计计数
print(data.describe(include=[np.object]))
#count = 出现的次数
#unique = 不同数量
#top = 出现频率最高的城市……
#出现频率
省级政区名称 地市级政区名称 党委书记姓名 籍贯省份名称 籍贯地市名称 性别 民族 教育
count 3663 3663 3021 2624 2615 2708 2517 2550
unique 27 333 901 29 240 2 2 7
top 广东省 泸州市 焉荣竹 山东省 威海市 男 汉族 硕士
freq 231 11 11 313 58 2633 2351 1381
我自己在学这门课,觉得不错,推荐给想入门又找不到门道的小伙伴~
这是当初推荐给我的数据分析大牛写的推荐理由,原封不动放这里啦:
这门课程是很系统的,而且适合小白基础入门的。长得非常详细,然后循序渐进,后面有比较综合性的项目实践操作演练。
有两个好处,一是就是帮我们更加系统的学习,少走弯路,二,好的学习资料,帮我们节约学习时间。
贵是贵了点,不过,考虑考虑你的时间成本,我个人觉得还是值得的