首页 > 编程语言 >python—pandas基础(1)

python—pandas基础(1)

时间:2024-07-27 16:57:13浏览次数:22  
标签:index 文件 python Series 基础 导入 pd data pandas

文章目录


Python中的Pandas是一个强大的数据分析和处理库,它提供了快速、灵活和表达式丰富的数据结构,旨在使“关系”或“标签”数据的处理工作变得既简单又直观。Pandas非常适合于金融、统计分析、社会科学以及许多其他领域的数据处理。
在这里插入图片描述
使用 Pandas 包完成数据读入、数据清理、数据准备、图表呈现等工作,为继续学习数据建模和数据挖掘打下坚实基础。

安装

pip install pandas

设定系统环境

import pandas as pd
#设定自由列表输出最多为 10 行
pd.options.display.max_rows = 10
# 显示当前 Pandas 版本号
pd.__version__

Pandas的主要数据结构

  1. Series:一维的、同类型的数据结构,可以存储任何数据类型(整数、字符串、浮点数、Python对象等)。Series是带有索引的数组,索引可以是整数或其他数据类型(如字符串)。
  2. DataFrame:二维的、表格型的数据结构,可以看作是由多个Series组成的字典(共用同一个索引)。DataFrame既有行索引也有列索引,可以被看作是一个共享相同索引的Series的集合。

Series对象创建

在这里插入图片描述
Series:一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象,是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series 对象。用值列表生成 Series 时,Pandas 默认自动生成整数索引 。

使用列表创建

import pandas as pd
data=pd.Series([4,3,5,6,1])
data

pandas中两个重要的属性 values 和index,values:是Series对象的原始数据。index:对应了Series对象的索引对象。

属性values和index

data.values
data.index

指定index

data=pd.Series([5,4,6,3,1],index=['one','two','three','four','five'])

使用list列表指定index

data=pd.Series([4,3,2,1],index=list('abcd'))

传入字典创建,默认将key作为index

population_dict={'sh':2800,'bj':3000,'gz':1500,'sz':1200}
population_series=pd.Series(population_dict)
#如果存在取交集
sub_series=pd.Series(population_dict,index=['bj','sh'])
#如果不存在则值为NaN
sub_series=pd.Series(population_dict,index=['bj','xa'])

将一个标量与index对象一起传入创建

data=pd.Series(10,index=list('abcd'))

DataFrame对象创建

在这里插入图片描述
DataFrame 是 Pandas 中的一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame 即有行索引也有列索引,可以被看做是由 Series 组成的字典。将两个series对象作为dict的value传入,就可以创建一个DataFrame对象。

创建DataFrame对象

population_dict={'beijing':3000,'shanghai':1200,'guangzhou':1800}
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
import pandas as pd
population_series=pd.Series(population_dict)
area_series=pd.Series(area_dict)
citys=pd.DataFrame({'area':area_series,'population':population_series})

values index columns属性

citys.index
citys.values
citys.columns

列表创建

population_dict={'beijing':3000,'shanghai':1200,'guangzhou':1800}
area_dict={'beijing':300,'shanghai':180,'guangzhou':200}
data=pd.DataFrame([population_dict,area_dict])
#添加index属性
data=pd.DataFrame([population_dict,area_dict],index=['population','area'])

索引columns的使用

population_series=pd.Series(population_dict)
pd.DataFrame(population_series,columns=['population'])

二维数组指定columns和index创建

pd.DataFrame(np.random.randint(0,10,(3,2)),columns=list('ab'),index=list('efg'))

Pandas中的Index

在这里插入图片描述
Pandas中的Index,其实是不可变的一维数组

ind=pd.Index([3,4,5,6,7])
#根据下标获取值
ind[3]  
#切片获取值
ind[::2]
#有ndim  shap  dtype  size属性
#但不能进行修改
ind[3]=20

导入Excel文件

在这里插入图片描述
使用read_excel()方法导入文件,首先要指定文件的路径。(注意:使用Pandas模块操作Excel时候,需要安装openpyxl)

import pandas as pd
pd.read_excel('stu_data.xlsx')

导入.xlsx文件时,指定导入哪个Sheet

pd.read_excel('stu_data.xlsx',sheet_name='Target')
pd.read_excel('stu_data.xlsx',sheet_name=0)

导入.xlsx文件时,通过index_col指定行索引

pd.read_excel('stu_data.xlsx',sheet_name=0,index_col=0)

导入.xlsx文件时,通过header指定列索引

pd.read_excel('stu_data.xlsx',sheet_name=0,header=1)
pd.read_excel('stu_data.xlsx',sheet_name=0,header=None)

有时候本地文件的列数太多,而我们又不需要那么多列时,我们就可以通过设置usecols参数来指定要导入的列。

导入.xlsx文件时,通过usecols指定导入列

pd.read_excel('stu_data.xlsx',usecols=[1,2,3])

导入csv文件

在这里插入图片描述
导入csv文件时除了指明文件路径,还需要设置编码格式。Python中用得比较多的两种编码格式是UTF-8和gbk,默认编码格式是UTF-8。我们要根据导入文件本身的编码格式进行设置,通过设置参数encoding来设置导入的编码格式。

导入.csv文件,文件编码格式是gbk

pd.read_csv('stu_data.csv',encoding='gbk')

用分隔符号进行分隔。常用的分隔符除了逗号、空格,还有制表符(\t)。

导入.csv文件,指明分隔符

df=pd.read_csv("stu_data.csv",encoding='gbk',sep=' ')
df1=pd.read_csv('stu_data.csv',encoding='gbk',sep=',')

导入txt文件

在这里插入图片描述
导入.txt文件用得方法是read_table(),read_table()是将利用分隔符分开的文件导入。DataFrame的通用函数。它不仅仅可以导入.csv文件,还可以导入.txt文件。

导入.txt文件

pd.read_table('test_data.txt',encoding='utf-8',sep='\t')

读取数据库数据

在这里插入图片描述

配置 MySQL 连接引擎

conn = pymysql.connect(host = 'localhost',user = 'root',passwd = 'root',db = 'mydb',port=3306,charset = 'utf8' )

读取数据表

pd.read_sql(sql :需要执行的 SQL 语句/要读入的表名称
con : 连接引擎名称
index_col = None :将被用作索引的列名称
columns = None :当提供表名称时,需要读入的列名称list)
tab1 = pd.read_sql('select * from
emp',con=conn)
tab1 = pd.read_sql('select count(*) from
emp',con=conn)
sal_start = 150
end_start =3000
tab1 =pd.read_sql(f'select * from emp where sal between {sal_start} and {end_start}',con=conn,index_col = ['empno'])

保存数据

在这里插入图片描述

保存数据至外部文件

df.to_csv(
   filepath_or_buffer :要保存的文件路径
   sep =:分隔符
   columns :需要导出的变量列表
   header = True :指定导出数据的新变量名,可直接提供 list
   index = True :是否导出索引
   mode = 'w' : Python 写模式,读写方式:r,r+ ,w , w+ , a , a+     encoding = 'utf-8' :默认导出的文件编码格式
)
df2.to_csv('temp.csv')
df.to_excel(
    filepath_or_buffer :要读入的文件路径
    sheet_name = 1 Sheetl1 :要保存的表单名称
)
df2.to_excel('temp.xlsx', index = False,sheet_name = data)

保存数据至数据库

在这里插入图片描述

df.to_sql(
   name :将要存储数据的表名称
   con : 连接引擎名称
   if_exists = 'fail' :指定表已经存在时的处理方式
   fail :不做任何处理(不插入新数据)
   replace :删除原表并重建新表
   append :在原表后插入新数据
   index = True :是否导出索引 )
#pip install sqlalchemy
from sqlalchemy import create_engine
con =create_engine('mysql+pymysql://root:root@localhost:3306/mydb?charset=utf8')
df.to_sql('t_stu',con,if_exists=append)

了解数据

在这里插入图片描述

head()与 tail()

当数据表中包含了数据行数过多时,而我们又想看一下每一列数据都是什么样的数据时,就可以把数据表中前几行或后几行数据显示出来进行查看head()方法返回前 n 行(观察索引值),显示元素的数量默认是 5,但可以传递自定义数值tail()方法返回后 n 行观察索引值),显示元素的数量默认是 5,但可以传递自定义数值。

#浏览前几条记录
df.head()
df.head(10)
#浏览最后几条记录
df.tail()

info()

熟悉数据的第一点就是看下数据的类型,不同的数据类型的分析思路是不一样的,比如说数值类型的数据就可以求均值,但是字符类型的数据就没法求均值了。info()方法查看数据表中的数据类型,而且不需要一列一列的查看,info()可以输出整个表 中所有列的数据类型。

df.info()

shape

熟悉数据的第二点就是看下数据表的大小,即数据表有多少行,多少列 。shape()方法会以元组的形式返回行、列数。注意 shape 方法获取行数和列数时不会把索引和列索引计算在内。

df.shape

describe()

熟悉数据的第三点就是掌握数值的分布情况,即均值是多少,最值是多少,方差及分位数分别是多少 。describe()方法就是可以就可以获取所有数值类型字段的分布值。

df.describe()

标签:index,文件,python,Series,基础,导入,pd,data,pandas
From: https://blog.csdn.net/2301_77698138/article/details/140723865

相关文章

  • Python毕业设计基于Django的网上购物销售系统(代码+数据库+文档LW+运行成功)
    文末获取资源,收藏关注不迷路文章目录一、项目介绍二、主要使用技术三、研究内容四、核心代码五、文章目录一、项目介绍随着互联网技术的不断发展和普及,电子商务行业迅速崛起。越来越多的消费者选择在线购物,享受便捷、快速的购物体验。因此,开发一款基于Python的购物......
  • python毕业设计基于Django的电子书阅读系统的设计与实现 爬虫+大屏可视化
    文末获取资源,收藏关注不迷路文章目录一、项目介绍二、主要使用技术三、研究内容+四、核心代码五、文章目录一、项目介绍随着互联网的普及和移动设备的广泛应用,人们获取信息和阅读的方式发生了巨大变化。传统的纸质书籍阅读方式虽然经典,但存在携带不便、更新速度慢等......
  • python_wholeweek2
    目录编码方式open函数的使用open进行写入时有关于编码解码前面的open函数使用加了一个r绝对路径和相对路径的使用open函数的几种modewithopen的使用(对比open函数而言补充知识点,之前用过replace但是给忘了附加对于python识别文本时的编码错误链接解释编码方式​ txt文件的编码方......
  • Python 与 Visual Studio Professional 2022(64 位)- 预览版本 5.0 交互窗口挂起
    我正在MicrosoftVisualStudioProfessional2022(64位)-预览版17.11.0预览版5.0上运行Python开发工作负载。我正在关注VisualStudio中的Python教程https://learn.microsoft.com/en-us/visualstudio/python/tutorial-working-with-python-in-visual-studio-st......
  • Python面试宝典第19题:最小路径和
    题目        给定一个包含非负整数的mxn网格grid,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。        示例1:输入:grid=[[1,3,1],[1,5,1],[4,2,1]]输出:7解释:因为路径1→3→1→1→1的总......
  • 基于python的出租车管理网站的设计与实现【源码+文档+PPT】
    ......
  • 如何在Linux上的python中以后台模式打开程序?
    我需要在Linux上以后台模式使用python打开另一个程序。我尝试过subprocess.call("yourcommand")但它不是后台模式。并且os.startfile("file")在Linux上不起作用。请帮助我。可以使用Python的subprocess模块在Linux上以后台模......
  • 【学习笔记】Matlab和python双语言的学习(TOPSIS法)
    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、TOPSIS法1.模型原理2.基本步骤(1)原始矩阵正向化(2)正向矩阵标准化(3)计算得分并归一化二、代码实现----Matlab1.主程序2.正向化处理函数3.极小型正向化函数4.中间型正向化函数5.区间型正向化......
  • 基于Python flask 的豆瓣电影top250数据评分可视化
    跟着CSDN上学习一下爬虫和简单的可视化分析,最后完成了一个简单的小项目。1.项目简介        基于Pythonflask的豆瓣电影评分可视化。通过采用Python编程语言,使用flask框架搭建影视系统,并使用相关技术实现对豆瓣网站的爬取、数据存储和可视化分析。2、成果展示:......
  • 获取 Python Decimal 的精确十进制字符串表示形式?
    如果我有一个PythonDecimal,我怎样才能可靠地获得数字的精确十进制字符串(即不是科学记数法)表示而不带尾随零?例如,如果我有:>>>d=Decimal('1e-14')我会像:>>>get_decimal_string(d)'0.00000000000001'但是:Decimal类没有任何to_......