数据分析流程
7个步骤
主要使用pandas数据包来处理数据,以及常用到的pandas里的函数。在这里我们需要引入库:import pandas as pd
并且规定下面缩写:
df:DataFrame对象
s:Series对象
1.导入数据(数据读写)
pd.read_csv(filename)
:从CSV文件导入数据
pd.read_table(filename)
:从限定分隔符的文本文件导入数据
pd.read_excel(filename)
:从Excel文件导入数据
pd.read_sql(query, connection_object)
:从SQL表/库导入数据
pd.read_json(json_string)
:从JSON格式的字符串导入数据
pd.read_html(url)
:解析URL、字符串或者HTML文件,抽取其中的tables表格
pd.read_clipboard()
:从你的粘贴板获取内容,并传给read_table()
pd.DataFrame(dict)
:从字典对象导入数据,Key是列名,Value是数据
函数 | 功能 | 备注 |
---|---|---|
pd.read_csv |
读取文本文件 | CSV、tsv、txt等格式 |
pd.read_excel |
读取电子表格 | xls或xlsx格式 |
pd.read_sql |
读取数据库数据 | 需pymssql 或pymysql 模块的配合 |
df.to_csv |
写入文本文件 | df为数据框对象 |
df.to_excel |
写入电子表格 | df为数据框对象 |
df.to_sql |
写入数据库 | df为数据框对象 |
# 读入MySQL数据库数据
# 导入第三方模块
import pymysql
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', user='root', password='test',
database='test', port=3306, charset='utf8')
# 读取数据
user = pd.read_sql('select * from topy', conn)
# 关闭连接
conn.close()
# 数据输出
User
2.查看、检查数据(数据初印象)
df.head(n)
:查看DataFrame对象的前n行
df.tail(n)
:查看DataFrame对象的最后n行
df.sample(5)
: 随即选取3个数据来查看
df.shape()
:查看行数和列数
df.info()
:查看索引、数据类型和内存信息
df.describe()
:查看数值型列的汇总统计
df.columns
:返回数据集的列名称
df.dtypes
:返回数据集各变量的类型
s.value_counts(dropna=False)
:查看Series对象的唯一值和计数,离散变量的频次统计
df.apply(pd.Series.value_counts)
:查看DataFrame对象中每一列的唯一值和计数
S.quantile
:连续变量的分位数计算
# 数据读取
sec_cars = pd.read_table(r'C:\Users\Administrator\Desktop\sec_cars.csv', sep = ',')
# 预览数据的前五行
sec_cars.head()
# 查看数据的行列数
print('数据集的行列数:\n',sec_cars.shape)
# 查看数据集每个变量的数据类型
print('各变量的数据类型:\n',sec_cars.dtypes)
# 数据的描述性统计
sec_cars.describe()
3.数据选取(数据切片)
df[col]
:根据列名,并以Series的形式返回列
df[[col1, col2]]
:以DataFrame形式返回多列
s.iloc[0]
:按位置选取数据
s.loc['index_one']
:按索引选取数据
df.iloc[0,:]
:返回第一行
df.iloc[0,0]
:返回第一列的第一个元素
4.数据清理(缺失值、转换数据类型、重命名)
df.columns = ['a','b','c']
:重命名列名
pd.isnull()
:检查DataFrame对象中的空值,并返回一个Boolean数组,判断数据是否存在缺失值
df.duplicated()
:判断数据是否存在重复值
pd.notnull()
:检查DataFrame对象中的非空值,并返回一个Boolean数组
df.dropna()
:删除所有包含空值的行,删除缺失值
df.dropna(axis=1)
:删除所有包含空值的列
df.dropna(