数据分析主要使用一些工具对一堆数据做处理,然后整理成相关图表,最后得出分析结论。数据分析工具很多,比如:Excel、python、还有一些商业BI工具等。Excel操作简单,可视化操作。如果处理的数量比较大时,处理起来就很麻烦,加载很慢。本次我们简单介绍些Python在数据分析方面的应用。
Python是一门动态脚本语言,语法简单,入门快。这门语言的应用很广泛,在最近几年开发语言排行榜靠前,仅次于Java、C。用途很广泛,比如:Web开发、数据分析、桌面应用、机器学习等
1. 运行Python
大部分系统自带了Python解释器(windows需要额外安装)。运行Python代码有两种方式:控制台和文件方式
第1种:打开控制台 → 敲入python → print("hello")
第2种:将python代码写入文件中,比如:demo.py,然后运行 python demo.py即可。
2. 基础介绍
2.1 变量
a = "hello" b = 100 c = True
2.2 列表
list = [1,2,3] names = ["xiaoming", "zhangsan", "lisi"] list[:] list[1:2]
2.3 字典
dict = {"name":"xiaoming", "age":100} dcit['name']
2.4 函数
# 函数定义 def getName(): return "hello" # 函数调用 getName()
2.5 模块
# 导入模块 import os import sys
3. Pandas库介绍
pandas是基于numpy封装的科学计算库,提供很多函数用于数据分析、处理。
3.1 Dataframe
是一个二维数组,类似一张表格,有表头字段,列索引字段
4. 数据分析流程
4.1 数据采集
数据采集可以直接读取文件、数据库或者爬虫等,这里我们主要读取文件中的数据
import pandas as pd pd.read_csv() # 读取csv、tsv格式文件 pd.read_excel() # 读取excel pd.read_table() # 读取txt文本 pd.read_sql() # 从数据库读取
举例
In [184]: df = pd.read_csv('student.csv') In [185]: df Out[185]: id name age gender 0 1 xiamo 20 male 1 2 xiaohua 20 female 2 3 xiaoqiang 25 male 3 4 xiaoli 22 female 4 5 xiaohua 20 female
4.2 数据预处理
4.2.1 缺失值处理
df.isnull() #检测空值
df.fillna('') #填充空值
df.isnull().any() #检测哪一列有空值
df['age'].fillna(df['age'].mean(), inplace=True)
df.dropna(how='all',inplace=True) #删除空行
4.2.2 重复值处理
df.drop(index=0)
df.drop_duplicates() #去除重复行
4.2.3 类型转换
df['name'].str.lower() #转小写
df['name'].str.upper() # 转大写
df['name'].str.strip() #去掉指定字符
df['age'].astype(np.int64)
4.3 数据计算
4.3.1 统计数量
In [89]: df1.sum() Out[89]: A 9 B 12 C 15 dtype: int64
4.3.2 计算平均值
In [90]: df1.mean() Out[90]: A 3.0 B 4.0 C 5.0 dtype: float64
4.3.3 最大值、最小值、中间值
In [96]: df1.describe()
Out[96]: A B C count 3.0 3.0 3.0 mean 3.0 4.0 5.0 std 3.0 3.0 3.0 min 0.0 1.0 2.0 25% 1.5 2.5 3.5 50% 3.0 4.0 5.0 75% 4.5 5.5 6.5 max 6.0 7.0 8.0
4.4 数据导出
import pandas as pd pd.to_csv() pd.to_excel() pd.to_table()
4.5 数据可视化
将数据用图表展示出来,直观,要安装一些第三方库,比如:
matplotlib
seaborn
将数据展示为折线图、饼图、散点图等等
5 案例分析
5.1 读取文件
import pandas as pd
In [277]: df = pd.read_csv('student.csv')
In [278]: df
Out[278]:
id name age gender
0 1 xiamo NaN male
1 2 xiaohua 20.0 female
2 3 xiaoqiang NaN Male
3 4 xiaoli 22.0 female
4 5 xiaohua 20.0 Female
5 5 xiaohua 20.0 female
5.2 数据处理
df.fillna(0) # 空值默认为0
df['gender'] = df['gender'].str.lower() # 性别转为小写
df.drop_duplicates() #去掉重复行
In [284]: df.drop_duplicates()
Out[284]:
id name age gender
0 1 xiamo 0.0 male
1 2 xiaohua 20.0 female
2 3 xiaoqiang 0.0 male
3 4 xiaoli 22.0 female
4 5 xiaohua 20.0 female
5.3 数据统计
统计男女性别人数
In [285]: df.groupby('gender').count()
Out[285]:
id name age
gender
female 4 4 4
male 2 2 2
5.4 数据导出
df2.to_csv('result.csv')
5.5 数据可视化
饼图展示统计结果
df3 = df2.reset_index()
plt.pie(x=df3['age'], labels=df3['gender'])
6.参考
https://pandas.pydata.org/pandas-docs/stable/reference/index.html#api
http://www.360doc.com/content/19/0124/18/7669533_811054697.shtml