python中pandas库快速入门

第一部分:基本了解

Pandas是Python中一个非常强大和流行的数据分析库。它提供了高性能、易用的数据结构和数据分析工具。

①能够导出和导入各种文件(CSV, Excel, SQL数据库等)

②与matplotlib集成,方便绘图

③快速的数据操作(筛选,排序)

第二部分:安装

①下载pandas库

conda install pandas

②验证是否安装成功

python -c "import pandas; print(pandas.__version__)"

③卸载pandas

conda uninstall pandas

第三部分:使用

导包:

import pandas as pd
import numpy as np

(1)输出excel格式的内容

我们通过生成表的形式来研究:

需求:“输出一个语文,数学,英语,总成绩,评定等级(A,B,C,D,E)的这样的一个excel表并附带100条数据,代表100个学生”

代码:

①先安装openpyxl库,安装方式见我博客http://t.csdnimg.cn/4dsw5

②代码内容

import pandas as pd
import numpy as np
from openpyxl import load_workbook
from openpyxl.styles import Border, Side

# 设置随机种子以保证结果可重现
np.random.seed(42)

# 生成100个学生的数据
n_students = 100

# 生成随机成绩,范围为50-100
chinese = np.random.randint(50, 101, n_students)
math = np.random.randint(50, 101, n_students)
english = np.random.randint(50, 101, n_students)

# 计算总成绩
total = chinese + math + english

# 定义评定等级的函数
def get_grade(score):
    if score >= 270:
        return 'A'
    elif score >= 240:
        return 'B'
    elif score >= 210:
        return 'C'
    elif score >= 180:
        return 'D'
    else:
        return 'E'

# 应用评定等级函数
grades = [get_grade(score) for score in total]

# 创建DataFrame
df = pd.DataFrame({
    '语文': chinese,
    '数学': math,
    '英语': english,
    '总成绩': total,
    '评定等级': grades
})

# 添加学生编号
df.index = [f'学生{i+1}' for i in range(n_students)]
df.index.name = '学生编号'

# 保存为Excel文件
excel_file = '学生成绩表.xlsx'
df.to_excel(excel_file)

# 加载工作簿
wb = load_workbook(excel_file)
ws = wb.active

# 定义加粗的边框样式
thick_border = Border(left=Side(style='medium'), 
                      right=Side(style='medium'), 
                      top=Side(style='medium'), 
                      bottom=Side(style='medium'))

# 为所有单元格添加加粗的边框
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
    for cell in row:
        cell.border = thick_border

# 保存修改后的工作簿
wb.save(excel_file)

print(f"Excel文件已生成并添加了加粗的格子线:{excel_file}")

③输出位置

输出xlsx文件的位置在该运行程序统一目录下:

这样我们就生成了这样的一个表格:

基本操作剖析:

①写入excel文件
# 保存为Excel文件
excel_file = '学生成绩表.xlsx'
df.to_excel(excel_file)
②创建DataFrame(设置特征并填充数据)
df = pd.DataFrame({
    '语文': chinese,
    '数学': math,
    '英语': english,
    '总成绩': total,
    '评定等级': grades
})
③设置排序编号
# 添加学生编号
df.index = [f'学生{i+1}' for i in range(n_students)]
df.index.name = '学生编号'
④保存文件
# 保存为Excel文件
excel_file = '学生成绩表.xlsx'
df.to_excel(excel_file)
⑤设置保存的内容在表中显示的时候带上实线

# 加载工作簿
wb = load_workbook(excel_file)
ws = wb.active

# 定义加粗的边框样式
thick_border = Border(left=Side(style='medium'),
                      right=Side(style='medium'),
                      top=Side(style='medium'),
                      bottom=Side(style='medium'))

# 为所有单元格添加加粗的边框
for row in ws.iter_rows(min_row=1, max_row=ws.max_row, min_col=1, max_col=ws.max_column):
    for cell in row:
        cell.border = thick_border

# 保存修改后的工作簿
wb.save(excel_file)

(2)读取excel内容并输出前5条数据:

代码:

import pandas as pd #导入pandas 模块
 
# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")
# 输出前5条记录
print(df.head())

如果出现无法对齐的情况:则加上:

pd.set_option("display.unicode.east_asian_width", True)

如果还是没有办法对齐,可以看我的博客:http://t.csdnimg.cn/3dSV5

使用Tabulate库来格式化输出:

import pandas as pd  # 导入pandas 模块
from tabulate import tabulate
# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")
#pd.set_option('display.unicode.ambiguous_as_wide', True)
heads_content=["学生编号","语文","数学","英语","总成绩","成绩评定"]
table = tabulate(df.head(),headers=heads_content,tablefmt='plain', numalign="center")
# 输出前5条记录
print(table)

基本操作剖析:

①读取excel文件内容
# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")
②取出前五行数据
df.head()
③取出前n行数据
df.head(n)
④输出格式
table = tabulate(df.head(10),headers=heads_content,tablefmt='plain', numalign="center")

print(table)

见库tabulate的用法http://t.csdnimg.cn/1Z2Qs

  ⑤显示后n行
df.tail(n)    
  ⑥查看表的基本信息
df.info()

⑦单独查看列名
print(df.columns)

⑧数据的选择与过滤(查找)
1.选择一行(获取第2行数据)
print(df.iloc[1])
  • 2.选择多行(获取第2到4行数据)
  • print(df.iloc[1:4])
  • 3.选择一列(第2列)
  • # 选择第一列,使用列的整数位置索引
    print(df.iloc[:, 1]) 
  • 4.选择多列(选择第2到4列)
  • print(df.iloc[:,1:4])
     
  • 5.行列结合获得具体值(第1行第2列(第一个学生的语文成绩))
    # 使用iloc
    second_row = df.iloc[0,1]
⑨数据的选择与过滤(增加)
1.在第i列后面增加一列(i=1为例)

核心代码:

# 创建一个新的列表,包含从1到100的整数
new_lst = list(range(1, 101))
# 将新列表插入到DataFrame的第二个位置作为新的一列,列名为“未命名学科”
df.insert(1, '未命名学科', new_lst)

总代码:

import pandas as pd  # 导入pandas 模块

# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")

# 创建一个新的列表,包含从1到100的整数
new_lst = list(range(1, 101))
# 将新列表插入到DataFrame的第二个位置作为新的一列,列名为“未命名学科”
df.insert(1, '未命名学科', new_lst)

# 保存修改后的DataFrame到新的Excel文件
df.to_excel("学生成绩表.xlsx", index=False)
2.在第i行后面增加一行

直接在最后一行添加新数据(第101行添加数据):

核心代码:

df.loc[100]=["学生101",101,100,99,98,297,'A']

总代码:

import pandas as pd  # 导入pandas 模块

# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")

df.loc[100]=["学生101",101,100,99,98,297,'A']

# 保存修改后的DataFrame到新的Excel文件
df.to_excel("学生成绩表.xlsx", index=False)
⑩数据的选择与过滤(修改)
1.修改内容

修改第101行数据的第6列为100000:

df.iloc[100,5]=100000
2.修改列名

核心代码:

new_array = ['学生编号', '线性代数', '语文', '数学', '英语', '总成绩', '评定等级']
col_mapping = dict(zip(array1, new_array))
# 使用rename方法修改列名
df.rename(columns=col_mapping, inplace=True)

总代码:

import pandas as pd

# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")
array1 = df.columns  # 获取当前列名
print(array1)
# 创建一个包含旧列名和新列名的字典
new_array = ['学生编号', '线性代数', '语文', '数学', '英语', '总成绩', '评定等级']
col_mapping = dict(zip(array1, new_array))
# 使用rename方法修改列名
df.rename(columns=col_mapping, inplace=True)

# 保存修改后的DataFrame到新的Excel文件
df.to_excel("学生成绩表.xlsx", index=False)
⑪数据的选择与过滤(删除)
1.删除第i列

核心代码:

df.drop(columns='线性代数',axis=1,inplace=True)

完整代码:

import pandas as pd

# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")

df.drop(columns='线性代数',axis=1,inplace=True)

# 保存修改后的DataFrame到新的Excel文件
df.to_excel("学生成绩表.xlsx", index=False)
2.删除第i行

删除第1行数据:

核心代码:

df.drop(labels=0,axis=0,inplace=True)

完整代码:
 

import pandas as pd

# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")
df.drop(labels=0,axis=0,inplace=True)

# 保存修改后的DataFrame到新的Excel文件
df.to_excel("学生成绩表.xlsx", index=False)
3.按照指定条件删除

删除“语文”分数小于60分的所有人:

核心代码:

df.drop(df[(df['语文']<60)].index,inplace=True) # 删除语文分数小于60的行

完整代码:

import pandas as pd

# 读取excel 文件内容
df = pd.read_excel("学生成绩表.xlsx")
df.drop(df[(df['语文']<60)].index,inplace=True) # 删除语文分数小于60的行
# 保存修改后的DataFrame到新的Excel文件
df.to_excel("学生成绩表.xlsx", index=False)
2.删除第i列
⑫查看当前行数
print(len(df))
⑬数据的统计运算
1.求平均值
2.求总和
3.求最大值
4.求最小值
5.求标准差

代码:

print(df['语文'].mean())  # 平均值
print(df['语文'].sum() ) # 总和
print(df['语文'].max() ) # 最大值
print(df['语文'].min() ) # 最小值
print(df['语文'].std() ) # 标准差
⑭排序
1.按照语文分数正序排列(从小到大)

df.sort_values(by='语文', ascending=True, inplace=True)
2.按照语文分数逆序排列(从大到小)

df.sort_values(by='语文', ascending=False, inplace=True)

好啦,我会持续学习,持续更新,也希望我的总结能给大家带来帮助!

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

还不秃顶的计科生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值