python 操纵 excel 简单版

配置环境

  1. python3安装教程 windows
  2. pandas安装(windows)
    1. 按下Win(一般为键盘左下角第3个键) + R
    2. 输入 cmd, 并按下键盘中的 Enter
    3. 输入 pip install pandas -i https://pypi.douban.com/simple/ 并按下键盘中的Enter
    4. 安装完成后, 就可以编写 python 代码对excel进行操作啦!

数据结构

  • DataFrame: 一种类似于二维数组的数据结构, 形式和常用属性如下:
import pandas as pd
path = r'C:\Users\LENOVO\Desktop\test.xlsx'  # excel 文件路径
dataframe = pd.read_excel(path)
print(dataframe)
"""
数据格式如下:
   id name 性别
0   1   小明  男
1   2   小红  女
2   3   小马  女
3   4   小李  男

# 数据常用属性:
print(dataframe.shape)  # 查看数据的行和列数
print(dataframe.info)  # 查看datafram 中各列的 数据类型(int, float, datatime, string)
print(dataframe.columns)  # 查看 datafram 中的列索引
"""

读取 excel文件为DataFrame

import pandas as pd


path = r'C:\Users\LENOVO\Desktop\test.xlsx'  # excel 文件路径
dataframe = pd.read_excel(path)

将DataFram写入 excel 文件

import pandas as pd

path = r'C:test.xlsx'  # excel 文件路径
dataframe = pd.read_excel(path)
new_path = r'C:\Users\LENOVO\Desktop\write_path.xlsx'
dataframe.to_excel(new_path)

DataFrame 常用操作方式

  1. 读取某一列的全部元素
df = pd.read_excel('test.xlsx')
df['cosl']  # 直接使用列名读取列中所有元素为 类数组
  1. 读取某一行位置的元素
df = pd.read_excel('test.xlsx')
df.loc['row']  # 直接使用列名读取行中所有元素为 类数组
  1. 筛选某一列, 一行中的元素 自一下起省略 df 的初始化, 初始化方式同上

df[df['col'] < 200 & df['col2'] > 2000]  # 条件 & 筛选
"""
使用 | & 对数据进行条件筛选, 上一行用于筛选出 df 中 名为 col 列的数据小于 200
且 名为 col2的列的数据小于 2000 的所有数据.
"""

  1. 聚集函数
"""
需知, 对于 excel 同一列中的数据数据类型通常相同,
使用rank()方法来计算某一列中的 平均值, 最大值, 最小值,
"""
df = df['col']  """注意: 这里的 df 是指某一列的数据而不是全部数据"""
df.mean()  # 
df.max()
df.min()
df.median()
df.mode()  # 众数
df.var()  # 方差
df.std()  # 标准差
df.quantile(0.25/0.5/0.7/1)  # 求四分位数
  1. 替换, 排序, 删除, 划分, 插入
"""1. 替换"""
df[<col>].replace(240, 33)  # 将 指定列名的 数值 240 替代为 33
df.replace(np.NAN, 0)  # 将全表的 NAN 值替换为 0
df.replace([240, 260, 280], 33)  # 将 240 和 260 和 280 替换为 33
df.replace({240: 33, 260: 34, 280: 35})  # 指定值替换

"""2. 排序"""
df.sort_values(by = [col1], ascending=False,na_position="last|first")  # 按照 col1 进行排序,ascending指定降序,默认升序,na_position 默认将含有缺失值的行排在最后

df.sort_values(by = [col1, col2], ascending=[True, False])  # 依据多行进行排序

"""3. 删除"""
df.drop([col1, col2, col3], axis = 1)  # 删除第 1,2,3 列的数据
df.drop(df.columns[[4, 5]], axis = 1)  # 删除指定的 第 5,6列,df.index
df.drop(columms = [col1, col2]) # 不用指定 axis 参数,删除指定名称的列,index
# 当 axis 等于 0 时,表示删除行,当 axis 等于 1 时,表示删除列
# 注意:删除指定的行是危险的,通常把需要的行筛选出来,过滤掉不想要的行。

"""4. 划分"""
import pandas as pd
pd.cut(df[col], 3, bins=[0, 3, 6, 10])  # 指定划分值,对行进行划分
pd.qcut(df[col], 3)  # 自动划分成 3 份,每份行数大致相等

"""5. 插入"""
df.insert(2, <col>, [val1, vla2, val3])  # 插入到指定 index 的列,指定value

# 插入行没有直接方法,通常需要将一张表进行拆分,然后将待插入的行进行拼接
  1. 算术运算 + - * /
# 有多少行参与运算,就返回多少结果
df[col] + df[col2]  # 两列相加,返回一列
df[col] - df[col2]
df[col] * df[col2]
df[col] / df[col2]

df[col] + 2  # 某一列的全部数据 + 2
  1. 时间操作, 学习 datetime的基本使用方法
from datetime import datetime

import pandas as pd
import numpy as np

# 时间索引下的时间筛选
index = pd.DatetimeIndex(['2020-02-22', '2020-03-20'])
data = pd.DataFrame(np.arrange(1, 11), columns=['nums'], index=index)

# 时间不为索引的情况下的时间筛选
df[df['成交时间'] > datetime(2020, 08, 08) & df['成交时间'] < datetime(2020,08,01)]

依据数据实现 Excel 画图功能

画图环境配置

  1. 安装matplotlib
    1. 按下Win(一般为键盘左下角第3个键) + R
    2. 输入 cmd, 并按下键盘中的 Enter
    3. 输入 pip install matplotlib -i https://pypi.douban.com/simple/ 并按下键盘中的Enter
    4. 安装完成后, 就可以编写 python 进行画图操作了!

使用matplotlib进行画图

图的要素 (画图的通用方法)

  1. 画布, 将图画在一个画布对象上
  2. 建立坐标系
  3. 在坐标系上画图
  4. 设置图的要素
    • 图的标题
    • x轴和y轴的标题
    • 设置x轴和y轴的刻度和x轴一周的数据范围
    • 图例, 数据注释, 数据表
      通用方法
import matplotlib.pyplot as plt
import numpy as np

x = np.arange(4)
y = np.arange(4)  # 创建绘图数据

fig = plt.figure()  # 建立画布
axe1 = fig.add_subplot(2, 2, 1)  # 将画布分成 2 x 2 并在 1 的位置处添加了坐标系. 共4 个位置
axe2 = fig.add_subplot(2, 2, 2)  # 将画布分成 2 x 2 并在 2 的位置处添加了坐标系. 共4 个位置

axe1.plot(x, y)  # 画折线图
axe1.xlabels('axe1_x')
axe1.ylabels('axe1_y')


axe2.bar(x, y)  # 画柱状图
plt.show()



matplotlib常用的画图方法

  1. 折线图
plt.plot(x, y, color, linestyle, linewidth, marker, markeredgecolor
    markeredgwidth, markerfacecolor, markersize, label)
    # color 使用 16 进制表示
    # linestyle:solid, dashed, dashdot, dotted
    # marker: 折线图中标记点的形状,. 'o v ^ < > s p * h + x D d _
    # 列表:该折线的 图例名称
  1. 柱状图
plt.bar(x, y, height, width, bottom, align, color, edgecolor)
    # x, y: 柱状图显示位置,通常是大小间距相等 数组 list
    # align: 柱子的对齐方式

# 堆积柱状图

  1. 散点图
plt.scatter(x, y, s, c, marker, linewidths, edgecolors)
    # s: 表示散点的大小,也可对每个点都传入 散点的大小值,气泡图
    # c:表示每个点的颜色
    # marker:同折线图
  1. 雷达图
plt.subplot(111, polar = True)
angles = np.linspace(0, 2*np.pi, 5, endpoint=False)
plt.polar(theta, r, color, marker, linewidth)
    # theta:每一点在极坐标的角度,list
    # r:每一点在极坐标的半径,list
    # color:连接各点之间线的颜色
    # marker:同折线图 和 散点图
# np.concateenate:    
  1. 箱型图
plt.boxplot(x, vert, widths, labels)
  1. 饼图
plt.pie(x, explode, labels, colors, autopct, pctdistance, shadow, labeldistance, 
    startangle, radius,  ......)
  1. 组合图, 在一个画布上 同时组合多张图, 通常是折线图和柱状图
"""根据同一坐标轴绘制不同的图并展现"""
折线图 + 折线图
折线图 + 柱状图
双 y 轴 图表
双 x 轴 图表

numpy 使用教程

  1. numpy常用于处理矩阵, 进行矩阵的运算

numpy 矩阵的常用属性和方法

  1. 生成矩阵 屏上学来终觉浅, 觉之此事要躬行
import numpy as np
np.zeros((2, 3))  # 生成一个 2 x 3 的全 0 矩阵
np.ones((2, 3)  # 生成一个 2 x 3 的 全 1 矩阵
np.eye(5)  # 生成 规格为 5 x 5 的单位矩阵

np.random.rand(row, columns)  # 生成 row, columns 规模的 [0, 1] 之间的数
np.random.randint(start, end, length)  # 在区间[start, end] 中随机产生 length 长度的整数序列
np.random.randint(start, end, length, size=(row, columns)  # size 指定生成数据的规模

  1. 矩阵的常用属性
arr.shape  #  显示矩阵 的规格 row x column
arr.size  # 返回矩阵的元素长度
arr.dtype  # arr 有 5 种类型, int, float, object, string, unicode
arr.ndim  # 数组的维度
  1. 数据的筛选, 3 中方式
"""1. 索引"""
np[0][0]  # 选中第 0 行 0 列数据
"""2. 范围选取"""
np[0:5]  # 选中 0-5 行的数据
"""3. 条件选取"""
np[ np[3] > 1]  # 选中 第三行数据 大于 1 的所有数据
  1. 数据预处理
  1. 类型转换 arr.astype(np.float64)
  2. 缺失值处理 arr[np.isnan(arr)] = 0
  3. 重复值处理 np.unique(arr[0])
  1. 矩阵的重塑
1. arr.reshape(row, columns), 需要保证 arr.size相同
2. arr.T, 转置
3. 矩阵的拼接, concatenate, hstack, column_stack
        # 横向合并
        np.concatenate([arr1, arr2], axis=1)  # 行拼接
        np.hstack((arr1, arr2))
        np.column_stack((arr1, arr2))
        
        # 纵向拼接
        np.concatenate([arr1, arr2], axis=0)  # 行拼接
        np.vstack((arr1, arr2))
        np.row_stack((arr1, arr2))
  1. 常用的数据分析函数
1. 元素级 函数: 针对数组中的每一个元素进行操作
        abs sqrt square exp log log10 log2 log1p modf isnan
2. 描述性统计函数,对 某一行,某一列进行擦欧总
        sum mean std var min max cumsum cumprod
3. 条件函数
        np.where(arr>60 true_show, false_show)  # 返回 展示show的值,未设置返回索引
        np.inld(arr1, arr2)  # 包含关系
        np.intersectld(arr1, arr2) 交集
        np.unionld(arr1, arr2)  并集
        np.setdiffld(arr1, arr2)  差集
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值