定制网站建设简介,微商城小程序免费,什么企业网站能自己做,即将开网的平台文章目录 安装设定系统环境 Series对象创建DataFrame对象创建Pandas中的Index导入Excel文件导入csv文件导入txt文件保存数据保存数据至外部文件 了解数据head()与 tail()info()shapedescribe() 列操作修改变量列筛选变量列删除变量列添加变量列根据新数据添加根据原数据添加 Pa… 文章目录 安装设定系统环境 Series对象创建DataFrame对象创建Pandas中的Index导入Excel文件导入csv文件导入txt文件保存数据保存数据至外部文件 了解数据head()与 tail()info()shapedescribe() 列操作修改变量列筛选变量列删除变量列添加变量列根据新数据添加根据原数据添加 Pandas 是一个开源的 Python 数据分析库它提供了快速、灵活和富有表达力的数据结构旨在使“关系”或“标签”数据的处理既简单又直观。它旨在成为高级数据分析和操作的高级构建块。Pandas 的名字来源于“panel data”面板数据和“python data analysis”Python 数据分析的缩写。 Pandas已经成为了Python 进行数据分析和挖掘时的数据基础平台和事实上的工业准。 使用 Pandas 包完成数据读入、数据清理、数据准备、图表呈现等工作为继续学习数据建模和数据挖掘打下坚实基础。 安装
pip install pandas设定系统环境
import pandas as pd
#设定自由列表输出最多为 10 行(可以根据需要去设定)
pd.options.display.max_rows 10
# 显示当前 Pandas 版本号
pd.__version__Series对象创建
Series一维数组,与Numpy中的一维array类似。它是一种类似于一维数组的对象是由一组数据(各种 NumPy 数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单的Series 对象。用值列表生成 Series 时Pandas 默认自动生成整数索引 。
【示例】使用列表创建
datapd.Series([4,3,5,6,1])
data0 4
1 3
2 5
3 6
4 1
dtype: int64pandas中两个重要的属性 values 和index**values:**是Series对象的原始数据。**index:**对应了Series对象的索引对象 【示例】属性values和index
data.values # array([4, 3, 5, 6, 1])
data.index # RangeIndex(start0, stop5, step1)【示例】指定index
datapd.Series([5,4,6,3,1],index[one,two,three,four,five])one 5
two 4
three 6
four 3
five 1
dtype: int64【示例】使用list列表指定index
datapd.Series([4,3,2,1],indexlist(abcd))a 4
b 3
c 2
d 1
dtype: int64【示例】传入字典创建默认将key作为index
population_dict{sh:2800,bj:3000,gz:1500,sz:1200}
population_seriespd.Series(population_dict)sh 2800
bj 3000
gz 1500
sz 1200
dtype: int64【示例】如果既用了字典创建了Series对象又显示的指定了index如果key不存在则值为NaN
#如果存在取交集
sub_seriespd.Series(population_dict,index[bj,sh])
#如果不存在则值为NaN
sub_seriespd.Series(population_dict,index[bj,xa])bj 3000.0
xa NaN
dtype: float64【示例】将一个标量与index对象一起传入创建
datapd.Series(10,indexlist(abcd))a 10
b 10
c 10
d 10
dtype: int64DataFrame对象创建
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}
population_seriespd.Series(population_dict)
area_seriespd.Series(area_dict)
cityspd.DataFrame({area:area_series,population:population_series})
print(citys)
area population
beijing 300 3000
shanghai 180 1200
guangzhou 200 1800【示例】values index columns属性
citys.index # Index([beijing, shanghai, guangzhou],dtypeobject)
citys.values array([[ 300, 3000],[ 180, 1200],[ 200, 1800]])citys.columns # Index([area, population], dtypeobject)【示例】列表创建
population_dict{beijing:3000,shanghai:1200,guangzhou:1800}
area_dict{beijing:300,shanghai:180,guangzhou:200}
datapd.DataFrame([population_dict,area_dict])
#添加index属性
datapd.DataFrame([population_dict,area_dict],index[population,area])
beijing shanghai guangzhou
population 3000 1200 1800
area 300 180 200【示例】索引columns的使用
population_seriespd.Series(population_dict)
pd.DataFrame(population_series,columns[population])
population
beijing 3000
shanghai 1200
guangzhou 1800【示例】二维数组指定columns和index创建
pd.DataFrame(np.random.randint(0,10(3,2)),columnslist(ab),indexlist(efg))
a b
e 2 0
f 2 5
g 7 8Pandas中的Index
Pandas中的Index其实是不可变的一维数组
indpd.Index([3,4,5,6,7]) # Index([3, 4, 5, 6, 7], dtypeint64)
#根据下标获取值
ind[3] # np.int64(6)
#切片获取值
ind[::2] # Index([3, 5, 7], dtypeint64)
#有ndim shap dtype size属性
#但不能进行修改
ind[3]20 # TypeError: Index does not support mutable operations导入Excel文件
使用read_excel()方法导入文件首先要指定文件的路径。
说明——使用Pandas模块操作Excel时候需要安装openpyxl
pd.read_excel(stu_data.xlsx)【示例】导入.xlsx文件时指定导入哪个Sheet
pd.read_excel(stu_data.xlsx,sheet_nameTarget)
pd.read_excel(stu_data.xlsx,sheet_name0)【示例】导入.xlsx文件时通过index_col指定行索引
pd.read_excel(stu_data.xlsx,sheet_name0,index_col0)【示例】导入.xlsx文件时通过header指定列索引
pd.read_excel(stu_data.xlsx,sheet_name0,header1)
pd.read_excel(stu_data.xlsx,sheet_name0,headerNone)有时候本地文件的列数太多而我们又不需要那么多列时我们就可以通过设置usecols参数来指定要导入的列。 【示例】导入.xlsx文件时通过usecols指定导入列
# 导入123列
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,encodinggbk)用分隔符号进行分隔。常用的分隔符除了逗号、空格还有制表符\t。
【示例】导入.csv文件指明分隔符
df pd.read_csv(stu_data.csv,encodinggbk,sep )
pd.read_csv(stu_data.csv,encodinggbk,sep,)导入txt文件
导入.txt文件用得方法时read_table()read_table()是将利用分隔符分开的文件导入。DataFrame的通用函数。它不仅仅可以导入.txt文件还可以导入.csv文件。
【示例】导入.txt文件
pd.read_table(test_data.txt,encodingutf-8,sep\t)【示例】导入.csv文件指明分隔符
pd.read_table(stu_data.csv,encodinggbk,sep,)保存数据
保存数据至外部文件
df.to_csv(filepath_or_buffer :要保存的文件路径sep 分隔符columns :需要导出的变量列表header True :指定导出数据的新变量名可直接提供 listindex 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)了解数据
head()与 tail()
当数据表中包含了数据行数过多时而我们又想看一下每一列数据都是什么样的数据时就可以把数据表中前几行或后几行数据显示出来进行查看head()方法返回前 n 行(观察索引值)显示元素的数量默认是 5但可以传递自定义数值tail()方法返回后 n 行观察索引值)显示元素的数量默认是 5但可以传递自定义数值。
#浏览前几条记录
df.head()
df.head(10)
#浏览最后几条记录
df.tail()info()
熟悉数据的第一点就是看下数据的类型不同的数据类型的分析思路是不一样的比如说数值类型的数据就可以求均值但是字符类型的数据就没法求均值了。 info()方法查看数据表中的数据类型而且不需要一列一列的查看info()可以输出整个表 中所有列的数据类型。
df.info()shape
熟悉数据的第二点就是看下数据表的大小即数据表有多少行多少列 。 shape()方法会以元组的形式返回行、列数。注意 shape 方法获取行数和列数时不会把索引和列索引计算在内。
df.shapedescribe()
熟悉数据的第三点就是掌握数值的分布情况即均值是多少最值是多少方差及分位数分别是多少 。 describe()方法就是可以获取所有数值类型字段的分布值。
df.describe()列操作
修改变量列
columns
df.columns 新的名称 list
df.columnsrename()
df.rename(
columns 新旧名称字典旧名称新名称
inplace False :是否直接替换原数据框)df.rename(columns newname:name,newname2:name2,inplace True)筛选变量列
通过 df.var 或 df[var] 可以选择单列
注意但只适用于已存在的列只能筛选单列结果为 Series
df.var 单列的筛选结果为 Series通过 df[[var]] 可以选择多列
df[[var]] 单列的筛选结果为 DataFream
df[[var1, var2]] 多列时列名需要用列表形式提
供因此可使用列表中的切片操作 多列的筛选结果为 DF删除变量列
df.drop(
index / columns 准备删除的行/列标签多个时用列表
形式提供
inplace False :是否直接更改原数据框)
df.drop(columns [col1,col2])
del df[column-name] 直接删除原数据框相应的一列建议尽量少用
del df.column_name #不允许添加变量列
根据新数据添加
df[cloumn] pd.Series([val,val2,val3],index[c1,c2,c3])根据原数据添加
df[cloumn] df[c2]df[c3]