1.pandas介绍与环境安装
Pandas包是基于Python平台的数据管理利器,已经成为了Python进行数据分析和挖掘时的数据基础平台和事实上的工业标准。
使用Pandas包完成数据读入、数据清理、 数据准备、图表呈现等工作,为继续学习数据建模和数据挖掘打下坚实基础。
安装pandas
pip install pandas==1.3.5 # 最稳定的版本
2.Series对象创建
Series:一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象,是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series 对象。用值列表生成 Series 时,Pandas 默认自动生成整数索引 。
简单来说,就是对numpy的一维数组array进行升级,多加了一个索引index
# 创建Series方法
import pandas as pd
# 1.使用列表创建
data = pd.Series([3,4,5,6,7])
print('1.使用列表创建:', data)
# 2.使用列表创建,指定index
data = pd.Series([3,4,5,6,7],index=['a','b','c','d','e'])
print('2.使用列表创建,指定index:', data)
# 3.使用list列表指定index
data = pd.Series([3,4,5,6,7],index=list("abcde"))
print('3.使用list列表指定index', data)
# 4.字典创建,默认将key作为index
population_dict = {'ch':2800,'bj':3000,'gz':1500,'sz':1200}
population_series = pd.Series(population_dict)
print('4.字典创建,默认将key作为index', population_series)
# 5.使用字典创建Series对象,指定index,存在时取交集进行显示
sub_series = pd.Series(population_dict,index=['bj','gz'])
print('5.使用字典创建Series对象,指定index,存在时取交集进行显示', sub_series)
# 6.使用字典创建Series对象,指定index,不存在时显示NaN
sub_series = pd.Series(population_dict,index=['bj','abc'])
print('5.使用字典创建Series对象,指定index,存在时取交集进行显示', sub_series)
# 7.查看Series的索引index
print('7.查看Series的索引index:',data.index)
# 8.查看Series的值values
print('8.查看Series的值value',data.values)
3.DataFrame对象创建
DataFrame 是 Pandas 中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame 即有行索引也有列索引,可以被看做是由 Series 组成的字典。
将两个series对象作为dict的value传入,就可以创建一个DataFrame对象。
简单来说,就是对Series(或者说numpy二维的数组)进行升级,添加了行列索引。
# 创建DataFrame对象
import pandas as pd
import numpy as np
# 1.通过创建Serirs来创建DataFrame
# 创建字典
population_dict = {'bj':3000,'sh':213,'gz':999}
area_dict = {'bj':111,'sh':876,'gz':425}
# 创建series对象
population_series = pd.Series(population_dict)
area_series = pd.Series(area_dict)
# 创建DataFrame
citys = pd.DataFrame({'area':area_series,"population":population_series})
print('1.通过创建Serirs来创建DataFrame:n',citys)
# 2.通过列表创建DataFrame(不添加列索引index)
# 创建字典
# 创建DataFrame
data = pd.DataFrame([population_dict, area_dict])
print('2.通过列表创建DataFrame(不添加列索引index)n',data)
# 3.通过列表创建DataFrame(添加列索引index)
# 创建字典
# 创建DataFrame
citys = pd.DataFrame([population_dict, area_dict],index=['population','area'])
print('3.通过列表创建DataFrame(添加列索引index)n',citys)
# 4.索引columns的使用
# DataFrame使用Series生成一维数组时,默认没有列索引
population_series = pd.Series(population_dict)
data = pd.DataFrame(population_series,columns=['population'])
print("4.索引columns的使用:n",data)
# 5.array创建DataFrame,二维数组指定columns和index
data = pd.DataFrame(np.random.randint(0,10,(3,2)),columns=list('ab'),index=list('efg'))
print('5.array创建DataFrame,二维数组指定columns和index:n',data)
# 6.查看DataFrame的行索引index 列索引columns 值values
print('行索引index:n',citys.index)
print('列索引columns:n',citys.columns)
print('值values:n',citys.values)
4.Pandas中Index对象
pandas中的index(行索引),是一个不可变的一维数组
import pandas as pd
import numpy as np
# pandas中的index(行索引),是一个不可变的一维数组
data = pd.DataFrame(np.random.randint(0,100,(3,4)), index=list('abc'), columns=list('ABCD'))
print('DataFrame:n',data)
# 1.获取行索引
ind = data.index
print('1.获取行索引:',ind)
# 2.根据索引下标获取索引值
print('2.根据索引下标获取索引值:n',ind[2])
# 3.切片获取值
print('3.切片获取值n',ind[::2])
# 4.有ndmin shape dtype size属性
print('ndmin:',ind.ndim, 'shape:',ind.shape, 'dtype:',ind.dtype, 'size:',ind.size)
# 5. 但是不可以进行修改索引值
try:
ind[3]=200
except:
print('5.不可以修改索引值')
5.Pandas(Python)导入Excel文件
使用read_excel()方法导入文件,首先要指定文件的路径。
说明
使用Pandas模块操作Excel时候,需要安装openpy
1.导入Excel文件
import pandas as pd
# 1.导入Excel文件
# 设置显示行数(列数)
pd.options.display.max_rows = 5
pd.options.display.max_columns = 5
pd.read_excel('stu_data.xlsx')
# 2.导入Excel文件,指定导入Excel中哪个Sheet
# 2.1 方法1:指定名称
pd.read_excel('stu_data.xlsx',sheet_name='Target')
# 2.2 方法2:指定Sheet索引
pd.read_excel('stu_data.xlsx',sheet_name=1)
# 3.导入Excel文件时,指定行索引、列索引
# 3.导入Excel文件时,通过index_col指定行索引
data = pd.read_excel('stu_data.xlsx',sheet_name=0, index_col=0)
print(data)
# 导入Excel文件时,通过header指定列索引
pd.read_excel('stu_data.xlsx',sheet_name=0, header=1)
# 4.导入Excel文件时,通过usecols指定导入列
pd.read_excel('stu_data.xlsx',usecols=[1,2,3])
6.Pandas(Python)导入csv文件
导入csv文件时除了指明文件路径,还需要设置编码格式。Python中用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF8。我们要根据导入文件本身的编码格式进行设置,通过设置参数encoding来设置导入的编码格式。
此csv文件时gbk格式,以逗号进行分隔数据
导入csv文件,指定文件的编码格式(默认是UTF-8)
import pandas as pd
# 导入csv文件,指定文件的编码格式(默认是UTF-8)
# UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 2: invalid start byte
# 产生报错,尝试指定gbk(大小写无所谓)
pd.read_csv('stu_data.csv',encoding='GBK')
导入csv文件,指明分隔符(默认是,)
用分隔符号进行分隔。常用的分隔符除了逗号、空格,还有制表符(t)。
# 导入csv文件,指明分隔符(默认是,)
df = pd.read_csv('stu_data.csv',encoding='gbk',sep=' ')
print('错误使用分隔符:n',df)
df = pd.read_csv('stu_data.csv',encoding='gbk',sep=',')
print('正确使用分隔符:n',df)
7.Pandas(Python)导入txt文件
导入.txt文件用得方法时read_table(),read_table()是将利用分隔符分开的文件导入。DataFrame的通用函数。它不仅仅可以导入.txt文件,还可以导入.csv文件。
import pandas as pd
# 导入txt文件
# 指定分隔符(默认是t) 指定编码格式encoding(默认是utf-8 大小写忽略)
pd.read_table('stu_data.txt',encoding='UTF-8',sep='t')
8.Pandas读取数据库中数据
import pandas as pd
import pymysql
# 获取数据库的mysql连接
con = pymysql.connect(
host='localhost',
user='root',
password='root',
db='sxt',
port=3306
)
sql = 'select * from t_user'
# 读去数据库中的数据,可以使用index_col设置索引列,默认是自动使用0-n
data1 = pd.read_sql(sql,con=con,index_col='id')
# 查询年龄大于10岁的
sql = 'select uname, age, sex, pwd from t_user where age>10'
data2 = pd.read_sql(sql, con=con)
data2
9.Pandas保存数据到CSV或Excel
import pandas as pd
# 读取文件保存为csv
df = pd.read_excel('stu_data.xlsx')
# df.to_csv(
# path_or_buf: 要保存的文件路径 默认是相对路径
# sep 分隔符(默认是逗号)
# columns:需要到处的变量列表
# header =True 指定到处数据的新变量名,可以直接提供list
# index = True 是否导出索引
# mode = 'w' Python写模式
# encoding = ‘utf-8' 默认到处的文件编码格式
# )
df.to_csv("temp.csv",index=False)
# 读取文件保存为Excel
# df.to_excel(
# filepath_or_buffer: 要读入的文件路径
# sheet_name = 1 要保存的Sheet表单名称
# )
df.to_excel('temp_exl.xlsx',index=False, sheet_name="data")
10.Pandas保存数据到数据库
import pandas as pd
import pymysql
df = pd.read_excel('stu_data.xlsx')
# 保存数据到mysql数据库中
# con = pymysql.connect(
# host='localhost',
# user='root',
# password='root',
# port=3306,
# db='sxt',
# charset='utf8'
# )
# 报错:DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting
# 解决方法:更换引擎con
from sqlalchemy import create_engine
con = create_engine('mysql+pymysql://root:root@localhost:3306/sxt?charset=utf8')
# df.to_sql(
# name :将要存储数据的表名称
# con : 连接引擎名称
# if_exists = 'fail' :指定表已经存在时的处理方式
# fail :不做任何处理(不插入新数据)
# replace :删除原表并重建新表
# append :在原表后插入新数据
# index = True :是否导出索引 )
df.to_sql('t_stu',con=con,if_exists='append')
原文地址:https://blog.csdn.net/m0_63953077/article/details/128935483
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_32976.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!