Pandas 是 Python 语言的一个扩展程序库,用于数据分析。
Pandas 名字衍生自术语 “panel data”(面板数据)和 “Python data analysis”(Python 数据分析)。
Pandas 一个强大的分析结构化数据的工具集,基础是 Numpy(提供高性能的矩阵运算)。
目录
一、Pandas Series——列,一维数据
Series是一种类似于一维数组的对象,它由一组 数据data(各种Numpy数据类型)以及一组与之相关的 数据标签(即索引)index组成。
Series 类似Excel表格中的一个列(column),类似于一维数组,可以保存任何数据类型。
1.加载和使用 pandas
import pandas as pd #一般别名为pd
pd.函数名 #调用pandas函数
2.pd.Series
生成Series
pandas.Series( data, index, dtype, name, copy)
#参数说明:
#函数名Series中,S开头大写
#data:一组数据(ndarray 类型)。
#index:数据索引标签,如果不指定,默认从 0 开始。可自行设置,索引数据可重复,不一定为自然数列
#index数量必须与data数量一致
#dtype:数据(data)的数据类型,默认会自己判断。
#name:设置名称。
#copy:拷贝数据,默认为 False。
方式一:通过函数定义生成列
#方式一:通过函数定义生成列
import pandas as pd
a = ["ni", "hao", "ma"]
my_s = pd.Series(a, index = ["x", "y", "z"])
print(my_s)
#输出结果:
x ni
y hao
z ma
dtype: object
方式二:通过字典生成列
#方式二:通过字典生成列
import pandas as pd
a = {"x":"ni", "y":"hao", "z":"ma"}
my_s = pd.Series(a)
print(my_s)
#输出结果:
x ni
y hao
z ma
dtype: object
查看数据data
#查看:根据索引查看数据
import pandas as pd
a = ["Google", "Runoob", "Wiki"]
myvar = pd.Series(a, index = ["x", "y", "z"])
print(myvar["y"])
#输出结果:Runoob
#查看:所有数据:Series名.values
import pandas as pd
a = ["ni", "hao", "ma"]
my_s = pd.Series(a, index = [1, 2, 3])
print(my_s.values)
#输出结果:['ni' 'hao' 'ma']
a = [1, 2, 3]
my_s = pd.Series(a, index = ["x", "y", "z"])
print(my_s.values)
#输出结果:[1 2 3]
修改数据data
#修改数据
myvar["y"] = "happy"
print(myvar["y"])
#输出结果:happy
查看索引index
#查看所有索引,以及索引的数据类型:Series名.index
import pandas as pd
a = ["ni", "hao", "ma"]
my_s = pd.Series(a, index = [1, 2, 3])
print(my_s.index)
#输出结果:Int64Index([1, 2, 3], dtype='int64')
a = [1, 2, 3]
my_s = pd.Series(a, index = ["x", "y", "z"])
print(my_s.index)
#输出结果:Index(['x', 'y', 'z'], dtype='object')
修改索引并自动对齐
import pandas as pd
a = [1, 2, 3]
my_s1 = pd.Series(a)
0 1
1 2
2 3
dtype: float64
#修改索引:
#方式一:
my_s1.index = ["x", "y", "z"]
#方式二:
my_s1 = pd.Series(a, index = ["x", "y", "z"])
x 1.0
y 2.0
z 3.0
dtype: float64
#修改索引并自动对齐
my_s2 = pd.Series(my_s1,index=["n","x", "y", "z"])
#原基础上增加索引"n",且其他索引不变,则索引可自动对齐
n NaN #新增索引,并赋值NaN
x 1.0 #其他索引自动对齐并对应原值
y 2.0
z 3.0
dtype: float64
my_ind = [1,2,3]
my_s3 = pd.Series(my_s2,index=my_ind)
#自定义全新的索引,由于定义的索引均未能与原Series的索引对应,因此均赋值为NaN
1 NaN
2 NaN
3 NaN
dtype: float64
查看数据类型
type()
pd.Series相关函数
my_s.copy() 复制列
my_s.all() 判断列内所有值都符合某条件
二、Pandas DataFrame——数据框,二维数据
DataFrame 是一个二维表格,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。
DataFrame 既有行索引也有列索引,它可以被看做由 Series 组成的字典(共同用一个索引),与Excel的二维表格相同。
1.pd. DataFrame
pandas.DataFrame( data, index, columns, dtype, copy)
#data:一组数据(ndarray、series, map, lists, dict 等类型)。
#index:索引值,或者可以称为行标签。
#columns:列标签,默认为 RangeIndex (0, 1, 2, ..., n) 。
#dtype:数据类型。
#copy:拷贝数据,默认为 False。
生成 DataFrame
方式一:通过列表生成
可理解为:先定义数据,再定义行标签,列标签
方式二:使用 ndarrays 生成
ndarray 的长度必须相同, 如果传递了 index,则索引的长度应等于数组的长度
可理解为:先定义 {列标签1:第1列所有数据,列标签2:第2列所有数据} 格式的字典,再定义行标签,其中各列数据长度相同,行标签长度=整列长度
方式三:使用字典生成
可理解为:先定义每行数据[ {列标签1:第1行数据,列标签2:第1行数据}, {列标签1:第2行数据,列标签2:第2行数据}]格式
Site Age
1 Google 10
2 Runoob NaN
3 Wiki 13
#方式一:使用列表创建
data = [['Google',10],['Runoob'],['Wiki',13]]
#逐行定义数据,第2行AGE无数据可不写
df = pd.DataFrame(data,index=[1,2,3], columns=['Site','Age'] )
#方式二:使用ndarrays 创建
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, "NaN", 13]}
#因要求ndarrays长度相同,age中必须输入NaN
df = pd.DataFrame(data,index=[1,2,3])
#方式三:使用字典创建
data = [{'Site':'Google','Age':10}, {'Site':'Runoob'},{'Site':'Wiki','Age':13}]
#逐行定义数据,第2行AGE无数据可不写
df = pd.DataFrame(data,index=[1,2,3])
查看和修改列标签
变更列标签的顺序
#列标签顺序默认按data顺序排列
import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, "NaN", 13]}
df = pd.DataFrame(data,index=[1,2,3])
print (df)
Site Age
1 Google 10
2 Runoob NaN
3 Wiki 13
#查看列标签
print(df.columns)
#输出结果:Index(['Site', 'Age'], dtype='object')
#变更列标签的顺序
df = pd.DataFrame(df,index=[1,2,3],columns=['Age','Site'])
print (df)
Age Site
1 10 Google
2 NaN Runoob
3 13 Wiki
#新增列
df = pd.DataFrame(df,columns=['Age','Phone','Site'])
Age Phone Site
1 10 NaN Google
2 NaN NaN Runoob
3 13 NaN Wiki
修改行标签
import pandas as pd
data = {'Site':['Google', 'Runoob', 'Wiki'], 'Age':[10, "NaN", 13]}
df = pd.DataFrame(data,index=[1,2,3])
print (df)
Site Age
1 Google 10
2 Runoob NaN
3 Wiki 13
df = pd.DataFrame(df,index= [3,1,4])
#修改行标签后,原有标签3,1将自动对齐数据,新增的4无数据赋值NaN
Site Age
3 Wiki 13
1 Google 10
4 NaN NaN
查看和修改数据
查询某列数据:df名[列名]
查看某行数据:df.loc[行标签名]
修改某列数据:统一给某列赋值:df名[列名]=
修改某列数据:点对点某列赋值:先定义一列Series,再赋值至某列中
修改某个数据:点对点某个数据赋值
Age Phone Site
1 10 NaN Google
2 NaN NaN Runoob
3 13 NaN Wiki
#查询某列数据
print(df['Age'])
#输出结果:
1 10
2 NaN
3 13
Name: Age, dtype: object
#查询某行数据
print(df.loc[1])
Age 10
Phone 123.0
Site Google
Name: 1, dtype: object
#统一给某列赋值
df['Phone']=123456
Age Phone Site
1 10 123456 Google
2 NaN 123456 Runoob
3 13 123456 Wiki
#修改某列的某几个值
phone1 = pd.Series([123,456],index=(1,3))
df['Phone'] = phone1
Age Phone Site
1 10 123.0 Google
2 NaN NaN Runoob
3 13 456.0 Wiki
Original: https://blog.csdn.net/weixin_41042487/article/details/124309299
Author: weixin_41042487
Title: 【Python 数据处理】Pandas
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/674898/
转载文章受原作者版权保护。转载请注明原作者出处!