栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python之pandas库--基础

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python之pandas库--基础

创建新的工作簿
import pandas as pd

file_path = r"C:UsersYGJ ing7Desktoppandas.xlsx"
data = pd.DataFrame()
data.to_excel(file_path)
print("make a new file!")
新建工作簿同时写入数据
data = pd.DataFrame({'id':[1, 2, 3], "name": ['关羽', '刘备', '张飞']})
print(data)
--------结果--------
   id name
0   1   关羽
1   2   刘备
2   3   张飞
设置索引
data.set_index('id')
读取数据

import pandas as pd

file_path = r"C:UsersadminDesktop1.txt"
data = pd.read_csv(file_path)
# 取一行数据
print(data.head(1))
# 查看数据的形状,返回(行数、列数)
print(data.shape)
# 查看列名列表
print(data.columns)
# 查看索引列
print(data.index)
# 查看每一列数据类型
print(data.dtypes)

问题1:不知道为什么我的这个不支持中文名字,执行报错;

问题2:只想要一些数据:head(num) 想要几行写几行;

问题3:reas_csv() 默认逗号分隔,read_table()  添加参数sep='s+' 匹配t n r等 导入re库;

问题4:读取文件表头设置 headers=None, names=[] 配合使用

data = pd.read_csv(file_path, header=None, names=['性别', '姓名', '年龄', '手机号', '住址', '入职日期'], nrows=3)
txt和CSV文件转化

读取TXT文件,在写入csv文件

import pandas as pd

file_path = r"C:UsersadminDesktop1.txt"
data = pd.read_csv(file_path, header=None, names=['性别', '姓名', '年龄', '手机号', '住址', '入职日期'])
data.to_csv(r"C:UsersadminDesktop1.csv", encoding='gbk')
读取数据库内容
import pandas as pd
import pymysql

db = pymysql.connect(host="127.0.0.1", user="root", password="12**56", database="task01", charset="utf8", port=3306)
data = pd.read_sql('select * from table_a', con=db, )
print(data)
pandas数据结构

Series序列,一维数组表示一行或一列数据

import pandas as pd

data = pd.Series(['loa', 'jia', 'iqo', 'kms', 'neh', 'ncjx', 'mkd'])
print(data)
print(data.index)
print(data.values)
DataFrame用法

1,传入二维列表格式,columns表示列字段, 执行如下代码: 

import pandas as pd
data=pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]],columns=['a','b','c'])
--------结果--------
   a  b  c
0  1  2  3
1  4  5  6
2  7  8  9

2, 传入的字典格式数据,

data = pd.DataFrame({'id':[1, 2, 3], "name": ['关羽', '刘备', '张飞']})
print(data)
--------结果--------
   id name
0   1   关羽
1   2   刘备
2   3   张飞

3, DataFrame结构,如何取数据??

print(data['a'][0] )      # 先列后行
print(data.loc[1]['a'] )  # 先行后列
print(data.iloc[1][0] )   # 数字形式 行-列
print(data[['a','b']])    # 取2列数据
--------结果-------
1
4
4
   a  b
0  1  2
1  4  5
2  7  8
实现VLOOKUP功能

第一个表字段通过学号进行匹配,添加一列总分字段

# -*- coding: utf-8 -*-
import pandas as pd

df_sinfo = pd.read_excel(r"C:UsersadminDesktopVlookup.xlsx", sheet_name="花名册")
print(df_sinfo.head())
df_grade = pd.read_excel(r"C:UsersadminDesktopVlookup.xlsx", sheet_name="成绩单")
print(df_grade.head())

res = pd.merge(df_sinfo, df_grade.loc[:, ["学号", "总分"]], how="left", on="学号")
print(res)

---------------------------结果----------------------------
 学号  姓名  班级
0   1  张三  1班
1   2  李四  1班
2   3  王五  2班
3   4  赵六  2班
4   5  邓七  3班
   学号  语文  数学  英语   总分
0   1    67    77    63    207
1   2    81    58    65    204
2   3    89    60    58    207
3   4    67    61    52    180
4   5    78    55    51    184
   学号  姓名  班级   总分
0   1  张三    1班    207
1   2  李四    1班    204
2   3  王五    2班    207
3   4  赵六    2班    180
4   5  邓七    3班    184
需求:将总分调整顺序,放在第一列??

实现思路:

  • 复制结果表中的总分列      
  • 将结果表中的总分列删除    res.drop("总分", axis=1)
  • 插入复制的总分列               
total = res["总分"]
res = res.drop("总分", axis=1)
res.insert(0, "总分", total)
print(res)
---------------------------结果----------------------------
    总分  学号  姓名  班级
0   207   1   张三   1班
1   204   2   李四   1班
2   207   3   王五   2班
3   180   4   赵六   2班
4   184   5   邓七   3班
pandas映射--map

需求:将性别这一列数据  “男”全部改为先生,“女”全部改为女士

解决思路:利用pandas中的map映射方法

第一种方式:字典映射

import pandas as pd

file_path = r"C:UsersadminDesktop数据.xlsx"
df = pd.read_excel(file_path)
dict_map = {"男": "先生", "女": "女士"}
# df["称呼"] = df["性别"].map(dict_map)
df["性别"] = df["性别"].map(dict_map)
print(df)

首先创建一个映射:字典格式

性别字段.map(映射)在赋值给该列,如果想创建一个新的列“称呼”就赋值给新的列

第二种方式:函数映射

map()中也可以传入一个函数

def replace_map(x):
    if "男" == x:
        res = "先生"
    else:
        res = "女士"
    return res

df["称呼"] = df["性别"].map(replace_map)
print(df)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021973.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号