一文掌握Python数据分析入门操作

这是一篇介绍用Python进行基础的数据分析的文章,总结了其他博主文章的要点,主要分为6个部分:

1.生成或导入数据表
2.检查数据表
3.清洗数据表
4.数据预处理
5.数据汇总 | 数据统计 | 数据导出
6.自动化处理

1.生成或导入数据表

在使用 python 进行数据导入前,我们需要先导入 pandas 和 numpy 库。

import numpy as np
import pandas as pd

导入数据表(从csv/xlsx文件导入):

df = pd.DataFrame(pd.read_csv('xxx.csv',header=1))
df = pd.DataFrame(pd.read_excel('xxx.xlsx'))
# df是dataframe的简写

生成数据表

# 列属性名columns以list形式给出,np.nan是NaN空值
df = pd.DataFrame({'id': [20001,20002,20003,20004,20005,20006,20007],
                   'date': pd.date_range('20210901', periods = 7),
                   'city': ['Beijing ', 'SH', ' guangzhou ', 'Shenzhen', 'shanghai', 'BEIJING ', 'SUZHOU'],
                   'age': [21,45,25,34,31,27,42],
                   'class': ['400-G','500-A','280-D','320-C','210-A','470-F','250-F'],
                   'salary': [15600,np.nan,34800,21000,np.nan,9500,np.nan]},
                   columns = ['id','date','city','age','class','salary'])

打印刚才生成的数据表

# 打印数据表
print('数据表内容如下:')
print(df)
# 打印数据表某一列
print('数据表的city列内容如下:')
print(df['city'])

结果:
在这里插入图片描述

2.检查数据表

输出表维度及基本信息

# 数据维度(6, 6)
print('数据表维度为:')
print(df.shape)

# 打印数据表信息
print('数据表基本信息如下:')
print(df.info())

结果:显示表中数据的基本信息如数据类型,空值个数,占用空间大小等
在这里插入图片描述
输出数据表的全部列名称

# 输出数据表的全部列名称
print('数据表的全部列名称如下:')
# 强制转化为列表形式
print(list(df.columns))

结果:
在这里插入图片描述
检查数据表的空值和唯一值

# 检查数据表是否存在空值
print('数据表空值判断如下:')
print(df.isnull())

# 检查数据表某一列是否存在空值
print('数据表的salary列空值判断如下:')
print(df['salary'].isnull())

# 输出数据表某一列的唯一值
print('数据表的city列唯一值如下:')
print(df['city'].unique())

结果:
在这里插入图片描述
查看数据表全部数值(以二维列表的形式返回)

# 查看数据表数值,Python中的Values函数用来查看数据表中的数值,以二维列表的形式返回
print('数据表的全部数值内容如下:')
print(df.values)

结果:
在这里插入图片描述
查看数据表部分行的数据

# 查看前4行数据
print('数据表的前4行内容如下:')
print(df.head(4))

# 查看后4行数据
print('数据表的后4行内容如下:')
print(df.tail(4))

结果:
在这里插入图片描述

3.清洗数据表

清理存在空值的行

# 删除数据表中含有空值的行,返回一个不含空值的数据框
# 这里的删除并不是对原数据框操作,而是相当于对一个copy的数据框进行删除,所以需要把结果传给新数据框df1
df1 = df.dropna(how = 'any')
print('df删除所有存在空值的行后的新数据框为:')
print(df1)

结果:
在这里插入图片描述
空值的均值填充

# 使用salary列的均值去填充salary列空值
# inplace = True表示直接对原数据框操作
# 此时,不能将fillna语句结果赋值给新数据框
df['salary'].fillna(df['salary'].mean(), inplace = True)
print('df填充空值后的结果为:')
print(df)

结果:
在这里插入图片描述
删除某一列中所有字符中的空格以及单词的大小写替换

# 清除city列中所有字符中的空格
df['city'] = df['city'].map(str.strip)
print('df清除city列中所有字符中的空格后的结果为:')
print(df)

# 将city列的所有字母转换为小写
df['city'] = df['city'].str.lower()
print('df的city列中所有字母转换为小写后的结果为:')
print(df)

结果:
在这里插入图片描述
某一列数据的类型转换

# 使用price列的均值去填充price列空值
# inplace = True表示直接对原数据框操作
# 此时,不能将fillna语句结果赋值给新数据框
df['salary'].fillna(df['salary'].mean(), inplace = True)
print('df填充空值后的结果为:')
print(df)

结果:
在这里插入图片描述
删除重复值所在行

# 删除重复值
df['city'] = df['city'].drop_duplicates()
print('df的city列删除重复值后的结果为:')
print(df)

结果:
在这里插入图片描述
替换数据值

# 数据替换
df['city'] = df['city'].replace('sh', 'shanghai')
df['city'] = df['city'].replace(NaN, 'nanjing')
print('df的city列将sh替换为shanghai后的结果为:')
print(df)

结果:
在这里插入图片描述
更改列属性名称

# 更改列名称
df = df.rename(columns={'class': 'category'})
print('df更改class列名称后的结果为:')
print(df)

结果:
在这里插入图片描述

4.数据预处理

数据表的合并

#创建 df1 数据表
df1 = pd.DataFrame({"id": [20001,20002,20003,20004,20005,20006,20007],
                  "gender": ['male','female','male','female','male','female','male'],
                  "pay": ['Y','N','Y','Y','N','Y','N'],
                  "m-point": [10,12,20,40,40,40,30]})
print('df1为:')
print(df1)

# 数据表合并(df and df1),how = 'inner'/'outer'/'left'/'right/
df_inner = pd.merge(df, df1, how = 'inner')
print('df和df1合并后的结果为:')
print(df_inner)

结果:
在这里插入图片描述
整张表按照某一列数据升序/降序排列

# 数据表按某两列排序(一个主序列,一个辅助序列,当主序列出现相等情况时,按辅助序列值升序排列)
df_inner = df_inner.sort_values(by = ['age','salary'], ascending = True)
print('df_inner按age列升序排列后的结果为:')
print(df_inner)

结果:
在这里插入图片描述
新建一列对某一列中符合条件的项进行标记

# 对符合条件的项进行标记
# 如果salary列的值>3000,group列显示high,否则显示low
df_inner['group'] = np.where(df_inner['salary'] > 20500, 'high', 'low')
print('df_inner添加group列后的结果为:')
print(df_inner)

在这里插入图片描述
新建一列对某一列中符合多个条件的数据进行标记

# 对符合多个条件的数据进行分组标记
df_inner.loc[(df_inner['city'] == 'shenzhen') & (df_inner['salary'] >= 20000), 'flag'] = 1
print('df_inner添加flag列后的结果为:')
print(df_inner)

在这里插入图片描述
此时我们恢复数据表,按index升序排列

# 恢复一下按index升序排列
df_inner = df_inner.sort_index()
print('重新按index排序结果为:')
print(df_inner)

在这里插入图片描述
按行或位置提取数据(loc iloc)

# 按数据表的--索引标签--提取数据(loc)
df_part1 = df_inner.loc[0:3]
print('提取结果为:')
print(df_part1)

# 按数据表的--位置--提取数据(iloc)
# [0,2,5]表示所在行的位置,[4,5]表示所在列的位置
df_part2 = df_inner.iloc[[0,2,5],[4,5]]
print('提取结果为:')
print(df_part2)

在这里插入图片描述
按条件筛选(与,或,非)

# 按条件筛选(与,或,非)
# 使用“与”条件进行筛选
df_part3 = df_inner.loc[(df_inner['age'] > 20) & (df_inner['city'] == 'beijing'), ['id','city','age','gender','price']]
print('提取结果为:')
print(df_part3)

# 使用“或”条件筛选
df_part4 = df_inner.loc[(df_inner['age'] > 35) | (df_inner['city'] == 'beijing'), ['id','city','age','gender','price']]
print('提取结果为:')
print(df_part4)
print('total price = %d' % df_part4['price'].sum())

在这里插入图片描述

5.数据汇总 | 数据统计 | 数据导出

数据表描述性的宏观统计,输出每一列的计数、均值、标准差等

# 数据表描述性统计
# describe函数是进行描述统计的函数,按列标签生成每列数据的总数,均值,标准差等数据
# 下面的代码中对数据表进行描述统计,使用round函数设置结果显示的小数位,并对结果数据进行转置
statistics_result = df_inner.describe().round(2).T
print('数据表宏观统计结果为:')
print(statistics_result)

在这里插入图片描述
输出标准差、协方差、相关系数、数据表各列之间的相关性分析

# 标准差
print('price列的标准差为:%d' % df_inner['price'].std())

# 协方差
# 协方差可以反应两个变量的协同关系, 变化趋势是否一致,是同向还是方向变化
# 两个字段间的协方差
print('price列与m-point列之间的的协方差为:%d' % df_inner['price'].cov(df_inner['m-point']))

# 相关系数
# corr函数用来计算数据间的相关系数,可以单独对特定数据进行计算,也可以对整个数据表中各个列进行计算
# 相关系数在-1到1之间,接近1为正相关,接近-1为负相关,0为无线性相关关系
print('price列与m-point列的相关系数为:%f' % df_inner['price'].corr(df_inner['m-point']))

# 数据表各列之间的相关性分析
print('数据表各列之间的相关系数为:')
print(df_inner.corr())

在这里插入图片描述
输出至xlsx/csv

#输出到excel格式
df_inner.to_excel('C:\\Users\\HP\\Desktop\\py_to_excel.xlsx', sheet_name='sheet1')

#输出到CSV格式
df_inner.to_csv('C:\\Users\\HP\\Desktop\\py_to_csv.csv')

6.自动化处理(将一些重复性的机械操作封装)

例如把显示数据表基本信息的操作写入函数

#创建自定义函数
def display_info(x):
    shape=x.shape
    types=x.dtypes
    colums=x.columns
    statistics_result = df_inner.describe().round(2).T
    print("数据维度:\n",shape)
    print("数据格式:\n",types)
    print("列名称:\n",colums)
    print("统计信息:\n",statistics_result)

#调用自定义函数获取 df 数据表信息并输出结果
display_info(df)

结果:
在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Polaris_T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值