wordpress网站+搬家,wordpress如何把背景颜色调为白色,天元建设集团有限公司怎么样,网站访问量大Pandas
Pandas中只有列 或者 二维表, 没有行的数据结构(即使是行的数据, 也会通过列的方式展示).
Series#xff1a;Series和Python中的列表非常相似#xff0c;但是它的每个元素的数据类型必须相同
DataFrame#xff1a;可以把DataFrame看作由Series对象组成的字典…Pandas
Pandas中只有列 或者 二维表, 没有行的数据结构(即使是行的数据, 也会通过列的方式展示).
SeriesSeries和Python中的列表非常相似但是它的每个元素的数据类型必须相同
DataFrame可以把DataFrame看作由Series对象组成的字典其中key是列名值是Series
一、series
1、创建Series对象
(一)、概述
Series也是Pandas中的最基本的数据结构对象下文中简称s对象是DataFrame的列对象或者行对象series本身也具有行索引
Series是一种类似于一维数组的对象由下面两个部分组成 values一组数据numpy.ndarray类型 index相关的数据行索引标签如果没有为数据指定索引于是会自动创建一个0到N-1(N为数据的长度)的整数型索引
(二)、实操 格式 Series(列表/元组/字典)例如 # 方式1: 把 Numpy的 ndarray 转为 Series
# 1. 创建numpy的ndarray对象.
arr np.array([1, 2, 3, 4, 5])
print(type(arr)) # class numpy.ndarray# 2. 把上述的 ndarray Series
s1 pd.Series(arr)
print(fs1的内容: {s1})
print(fs1的类型: {type(s1)}) # class pandas.core.series.Series# 演示 元组 Series对象
s3 pd.Series((10, 20, 30))
print(fs3的内容: {s3})
print(fs3的类型: {type(s3)}) # class pandas.core.series.Series# 演示 字典 Series对象
s4 pd.Series({A: 1, B: 2, C: 3})
print(fs4的内容: {s4})
print(fs4的类型: {type(s4)}) # class pandas.core.series.Series# 创建Series对象的时候, 加入: 索引.
s5 pd.Series([10, 20, 30], index[x, y, z])
print(fs5的内容: {s5})
print(fs5的类型: {type(s5)}) # class pandas.core.series.Series2、常用属性 格式 loc[] # 索引列
iloc[] # 行号
shape # 维度(行, 列)
size # 元素个数
dtype # 元素类型
dtypes # 效果同上
index # 获得所有的索引列也就是列名
keys() # 效果同上
values # 获取所有的值例如 # 1. 读取文件数据, 获取DF对象.
df pd.read_csv(./data/nobel_prizes.csv, index_colid)
# 2. 打印数据的前5条数据.
df.head() # 默认获取前5条数据.# 2. 从df对象获取第一行数据, 充当Series对象.
# 方式1: 根据 索引列 获取.
first_row df.loc[941]
print(first_row)
print(type(first_row)) # class pandas.core.series.Series# 方式2: 根据 行号 来获取.
first_row df.iloc[0]
print(first_row)
print(type(first_row)) # class pandas.core.series.Series# 3. 演示Series的属性
print(first_row.shape) # (7,), 维度
print(first_row.size) # 7, 元素个数
print(first_row.dtype) # Series的元素类型, object 字符串
print(first_row.dtypes) # 效果同上.# 扩展: 演示 int 和 str的 dtype属性
print(first_row[year]) # 从Series对象中, 获取: year列的值.
print(first_row[year].dtype) # 从Series对象中, 获取: year列的值 的 数据类型: int64
# print(first_row[category].dtype) # 从Series对象中, 获取: category列的值 的 数据类型. 报错, 因为字符串没有dtype属性.# index: 获取所有的 索引列(即: 列名)
print(first_row.index)
print(first_row.keys()) # 效果同上, 即: key()函数 效果 和 index属性效果 有一致.# values: 获取所有的 值
print(first_row.values)3、常用方法 格式 len() # 获取长度
head() # 获取前5条数据
head(n2) # 获取前2条数据
tail() # 获取后5条数据
tail(n3) # 获取后3条数据keys() # 获取所有的列名
tolist() # Series list列表
to_list() # 效果同上
to_frame()# Series DataFrame对象.drop_duplicates() # 去重, 返回 Series对象
unique() # 去重, 返回 list列表sort_values() # 根据值排序, 默认: 升序, ascending True
sort_values(ascendingFalse) # 根据值排序, ascendingFalse 降序
sort_index(ascendingFalse) # 根据索引排序 mean() # 平均值
max() # 最大值
min() # 最小值
sum() # 求和
count() # 统计该列的 非空值的个数
std() # 标准差value_counts() # 类似于SQL语句: select 性别, count(id) from 表名 group by 性别;
describe() # 查看列的详细信息例如 # 1. 创建Series对象.
s1 pd.Series(data[1, 2, 3, 4, 2, 3], index[A, B, C, D, E, F])
print(s1)# 2. 演示Series对象的常用方法.
print(len(s1)) # 获取长度, 6
print(s1.head()) # 获取前5条数据
print(s1.head(n2)) # 获取前2条数据6
A 1
B 2
C 3
D 4
E 2
dtype: int64
A 1
B 2
dtype: int64
print(s1.tail()) # 获取后5条数据
print(s1.tail(n3)) # 获取后3条数据B 2
C 3
D 4
E 2
F 3
dtype: int64
D 4
E 2
F 3
dtype: int64
print(s1.keys()) # 获取所有的列名Index([A, B, C, D, E, F], dtypeobject)
print(s1.tolist()) # Series list列表
print(s1.to_list()) # 效果同上
print(s1.to_frame())# Series DataFrame对象.[1, 2, 3, 4, 2, 3]
[1, 2, 3, 4, 2, 3]0
A 1
B 2
C 3
D 4
E 2
F 3
print(s1.drop_duplicates()) # 去重, 返回 Series对象
print(s1.unique()) # 去重, 返回 list列表A 1
B 2
C 3
D 4
dtype: int64
[1 2 3 4]
print(s1.sort_values()) # 根据值排序, 默认: 升序, ascending True
print(s1.sort_values(ascendingFalse)) # 根据值排序, ascendingFalse 降序A 1
B 2
E 2
C 3
F 3
D 4
dtype: int64
D 4
C 3
F 3
B 2
E 2
A 1
dtype: int64
print(s1.sort_index(ascendingFalse)) # 根据索引排序F 3
E 2
D 4
C 3
B 2
A 1
dtype: int64
# 平均值, 最大值, 最小值, 求和, 标准差...
print(s1.mean()) # 2.5 平均值
print(s1.max())
print(s1.min())
print(s1.sum())
print(s1.count()) # 统计该列的 非空值的个数.
print(s1.std()) # 标准差2.5
4
1
15
6
1.0488088481701516
# 统计每个元素的个数
print(s1.value_counts()) # 类似于SQL语句: select 性别, count(id) from 表名 group by 性别;2 2
3 2
1 1
4 1
Name: count, dtype: int64
# 查看Series列的详细信息.
print(s1.describe())count 6.000000
mean 2.500000
std 1.048809
min 1.000000
25% 2.000000
50% 2.500000
75% 3.000000
max 4.000000
dtype: float644、布尔索引 格式 对象[条件]例如 # 细节: True 要, False 不要.
# 1. 读取数据, 获取df对象
df pd.read_csv(data/scientists.csv)
df# 2. 查看每列的详细信息
df.describe() # 统计信息
df.info() # 详细信息# 3. 从df对象中 获取 Series 对象
series_age df.Age
series_age# 4. 演示Series对象的 布尔索引
bool_list [True, False, False, True, True, False, False, True]
print(series_age[bool_list])# 5. 筛选年龄大于平均年龄的科学家.
# 5.1 获取平均年龄
avg_mean series_age.mean()
print(avg_mean) # 59.125# 5.2 看看当前年龄 是否大于 平均年龄
bool_list series_age avg_mean
print(bool_list) # [False, True, True, True, False, False, False, True]# 5.3 获取 年龄大于平均年龄的科学家
print(series_age[series_age avg_mean])# 6. 上述代码优化版, 一行搞定.
# 补充: df[列名] 和 df.列名 都可以从df中获取到指定的 列.
# print(df.Age[df.Age df.Age.mean()])
print(df[Age][df[Age] df[Age].mean()])5、运算 格式 *例如 # 场景1: Series对象 和 数值运算, 则数值会和 Series对象的每个值进行具体的运算.
series_age 100
series_age * 2# 场景2: Series对象 和 Series对象运算, 会优先参考 索引列运算, 即: 索引值相同的进行计算, 不同的用NAN(空值)填充.
series_age series_ageseries_age.sort_index(ascendingFalse) series_ageseries_age pd.Series([1, 2, 3])
series_age pd.Series([1, 2, 3], index[a, b, c])二、DataFrame
1、创建DataFrame对象
(一)、概述
DataFrame是一个表格型的结构化数据结构它含有一组或多组有序的列Series每列可以是不同的值类型数值、字符串、布尔值等。
DataFrame是Pandas中的最基本的数据结构对象简称df可以认为df就是一个二维数据表这个表有行有列有索引DataFrame是Pandas中最基本的数据结构Series的许多属性和方法在DataFrame中也一样适用.
(二)、index和columns属性 格式 pandas.DataFrame(data容器名称, columns列名, index行名(索引))例如 # 1. 定义字典, 记录: 数据.
my_dict {id: [1, 2, 3],name: [乔峰, 虚竹, 段誉],age: [33, 29, 25]
}# 2. 把上述的字段 DataFrame对象
# columns: 指定列的顺序.
# index: 指定 索引列的值.
df2 pd.DataFrame(datamy_dict, columns[name, id, age], index[X, Y, Z])# 3. 打印结果.
print(df2)
print(type(df2)) # class pandas.core.frame.DataFrame
name id age
X 乔峰 1 33
Y 虚竹 2 29
Z 段誉 3 25
class pandas.core.frame.DataFrame(三)、实操 格式 常见的有 字典格式 和 列表套元组例如 # 1. 定义字典, 记录: 数据.
my_dict {id: [1, 2, 3],name: [乔峰, 虚竹, 段誉],age: [33, 29, 25]
}# 2. 把上述的字段 DataFrame对象
df1 pd.DataFrame(my_dict)# 3. 打印结果.
print(df1)
print(type(df1)) # class pandas.core.frame.DataFrame
id name age
0 1 乔峰 33
1 2 虚竹 29
2 3 段誉 25
class pandas.core.frame.DataFrame
# 1. 定义列表, 记录: 数据.
my_list [(1, 乔峰, 33),(2, 虚竹, 29),(3, 段誉, 25)
]# 2. 把上述的字段 DataFrame对象
# columns: 指定列的顺序.
# index: 指定 索引列的值.
df3 pd.DataFrame(datamy_list, columns[id, name, age], index[X, Y, Z])# 3. 打印结果.
print(df3)
print(type(df3)) # class pandas.core.frame.DataFrame
id name age
X 1 乔峰 33
Y 2 虚竹 29
Z 3 段誉 25
class pandas.core.frame.DataFrame2、常用属性 格式 df对象.shape # 数组的维度
df对象.size # 元素个数
df对象.values # df元素对象-ndarray形式
df对象.dtypes # 各列元素的类型
df对象.ndim # 数组的秩也就是数组的维度数量或者轴的数量
df对象.index # 获得所有的索引列的值
df对象.columns # 获得所有的列名例如 # 1. 读取文件, 获取df对象.
df pd.read_csv(data/scientists.csv)# 2. 演示df对象常用属性
print(df.shape) # 维度: (8, 5)
print(df.size) # 元素个数: 行数 * 列数, 40
print(df.values) # DF对象 ndarray形式
print(type(df.values)) # class numpy.ndarray
print(df.dtypes) # (各列)的元素类型
print(df.ndim) # 维度, 2
print(df.index) # 获取所有的 索引列(的值)
print(df.columns) # 获取所有的列名3、常用方法 格式 len(df对象) # 行数
对象.head() # 默认前5行
对象.head(n2) # 前2行
对象.tail() # 默认后5行
对象.tail(n2) # 后2行
对象.info() # 查看各列的基本信息
对象.describe() # 查看各列的统计信息(默认只显示数值列),包括: 平均值, 方差, 最大值, 最小值等
对象.describe(includeall) # 查看各列的统计信息, 所有列
对象.describe(exclude[int, float]) # 查看各列的统计信息, 不包含int, float类型的列
对象.count() # 查看各列非空值的总数
对象.max() # 查看各列的最大值
对象.min() # 查看各列的最小值
对象.数值列名.mean() # 该数值列的平均值例如 # 演示df对象的常用方法
print(len(df)) # 8, 行数
print(df.head()) # 默认是前5行
print(df.head(n2)) # 前2行
print(df.tail()) # 默认是后5行
print(df.tail(n2)) # 后2行print(df.info()) # 查看各列的基本信息, 包括: 列名, 列元素个数, 列元素类型
print(df.describe()) # 查看各列的统计信息(默认只显示 数值列相关), 包括: 平均值, 方差, 最大值, 最小值等
print(df.describe(includeall)) # 查看各列的统计信息, 所有列.
print(df.describe(exclude[int, float])) # # 查看各列的统计信息, 不包含int, float类型的列print(df.count()) # 查看各列的非空值总数
print(df.max()) # 查看各列的最大值
print(df.min()) # 查看各列的最小值
# print(df.mean()) # 查看数值列的平均值, 针对于旧版本Anaconda(例如: 2020版)有效. 新版本不支持.
print(df.Age.mean())4、索引 格式 # 布尔索引
df[df.数值列名 df.数值列名.mean()] # df对象的布尔值操作.
df.列名[df.列名 df.列名.mean()] # Series对象的布尔值操作.例如 # 需求: 过滤出df对象中, Age列大于平均年龄的数据行
df[df.Age df.Age.mean()] # df对象的布尔值操作.
df.Age[df.Age df.Age.mean()] # Series对象的布尔值操作.5、运算 格式 *例如 # 1. 和数值运算的时候, 数值会和df对象的每个值进行计算.
# 2. 和新的df计算的时候, 会优先参考索引, 对应索引进行计算, 不匹配就返回NAN.# 场景1: df 和 数值计算.
df * 2# 场景2: df 和 df计算
df dfdf df[:4] # 类似于Python的切片, 即: 获取前4行, 索引为: 0 ~ 4 包左不包右三、更改Series和DataFrame对象
1、设置和取消索引列 格式 pandas.read_csv(文件路径, index_col目标列名)df对象.set_index(目标列的列名, inplaceTrue) # inplaceTrue时在原df对象上直接修改,反之inplaceFalse时生成新的df对象默认时False
df对象.reset_index(inplaceTrue) # 将当前索引变成普通列,自动补充索引列例如 # 场景1: 读取数据, 不设置索引列, 读取数据完毕后, 设置索引列.
# 1. 读取数据, 获取df对象.
movie pd.read_csv(data/movie.csv)
movie.head()# 2. 设置 movie_title列为索引列
movie.set_index(movie_title, inplaceTrue) # inplaceTrue 在原df对象上直接修改.# 3. 查看设置后的内容.
movie.head()# 场景2: 读取数据时, 直接设置索引列.
movie pd.read_csv(data/movie.csv, index_colmovie_title)
movie.head()# 场景3: 重置索引列.
movie.reset_index(inplaceTrue)
movie.head()2、修改行名和列名 格式 # 方案一
rename()# 方案二
读取所有的行名,列名,再利用索引更改行/列名字例如 # 方案一
# 1. 读取数据, 获取df对象
df pd.read_csv(data/movie.csv, index_colmovie_title)
df.head()
# 2. 手动修改行名(索引列) 和 列名
# 索引列
idx_name {Avatar: 阿凡达, Pirates of the Caribbean: At Worlds End: 加勒比海盗}
# 列名
col_name {color: 颜色, director_name: 导演名}
# 3. 通过 rename()函数, 修改 行名 和 列名
df.rename(indexidx_name, columnscol_name, inplaceTrue)
# 4. 查看修改后的结果.
df.head()# 方案二
# 1. 读取数据, 获取df对象
df pd.read_csv(data/movie.csv, index_colmovie_title)
df.head()
# 2. 获取所有的 行名(索引列值) 和 列名
idx_list df.index.to_list()
col_list df.columns.tolist()
# 3. 修改 列名 和 行名
# 索引列
idx_list[0] 阿凡达
idx_list[1] 加勒比海盗
# 列名
col_list[0] 颜色
col_list[1] 导演名
# 4. 把修改后的 行名 和 列名, 设置为新的: 索引列 和 列名即可.
df.index idx_list
df.columns col_list
# 5. 查看修改后的结果.
df.head()3、添加列 格式 df对象[添加的列名] 值
df对象.loc[索引] 值
pandas.concat([df对象, new_row], ignore_indexTrue) # 将新行添加到原始df对象例如 # 1. 读取数据, 获取df对象
df pd.read_csv(data/movie.csv)
df.head()# 2. 添加列. 格式: df对象[列名] 值
# 是否看过这个电影, 0 没看过, 1 看过
df[has_seen] 1# 添加1列, 表示电影总的 脸书点赞数, 总点赞数 导演的脸书点赞数 演员的点赞数
df[director_actor_all_facebook_likes] df[director_facebook_likes] df[actor_1_facebook_likes] df[actor_2_facebook_likes] df[actor_3_facebook_likes]# 3. 查看添加后的内容.
df.head()4、删除列 格式 df对象.drop(列名/列索引/行号/行索引)例如 # 1. 演示删除列
# df.drop(has_seen, inplaceTrue, axiscolumns)
# df.drop(imdb_score, inplaceTrue, axiscolumns)
# df.head().drop([Avatar, Pirates of the Caribbean: At Worlds End])
df.head().drop([0, 1]) # 根据 索引列值 删除该行.
# 2. 查看处理后的结果.
df.head()5、插入列 格式 df对象.insert(loc索引值, column列名, value值)例如 # 1. 在索引为1的地方插入1列, 总利润 总收入 - 总预算
df.insert(loc1, columnprofix, valuedf[gross] - df[budget]) # insert() 是直接在原对象上修改
# 2. 查看处理后的结果.
df.head()四、导入和导出数据
1、导出数据 格式 df对象.to_pickle(路径) # pickle文件 一般用于存储 pandas的 中间结果
df对象.to_csv(路径, indexFalse, sep\t) # 将文件导入到csv或者tsv中;index为True是导出索引列,反之不导出,默认导出;sep为分隔符
df对象.to_excel(路径, indexFalsesheet_name名字) # 将文件导入到excel中;index为True是导出索引列,反之不导出,默认导出;sheet_name为表名例如 # 1. 读取文件, 获取df对象.
df pd.read_csv(data/scientists.csv)# 2. 演示导出数据到文件中.
# 要求: 导出文件到 当前项目下的 output 文件夹下.
# 导出的格式: df.to_文件格式()# 前提: output文件夹必须存在.
df.to_pickle(output/scientists.pickle) # pickle文件 一般用于存储 pandas的 中间结果.
df.to_csv(output/scientists.csv) # 细节: 索引列也会导出
df.to_csv(output/scientists_noindex.csv, indexFalse) # 细节: 不导出索引列
df.to_csv(output/scientists_noindex.tsv, indexFalse, sep\t) # sep: 分隔符df.to_excel(output/scientists.xlsx)
df.to_excel(output/scientists_noindex.xlsx, indexFalse, sheet_nametest)
print(导出成功!)2、导入数据 格式 df对象.read_pickle(地址)
df对象.read_csv(地址)
df对象.read_excel(地址)例如 # 1. 读取文件, 获取df对象
df pd.read_pickle(output/scientists.pickle)df pd.read_csv(output/scientists.csv)
df pd.read_csv(output/scientists_noindex.csv)
df pd.read_csv(output/scientists_noindex.tsv, sep\t) # 读取tsv的时候, 指定分隔符df pd.read_excel(output/scientists.xlsx)# 如果不写表名, 则默认读取第1个表, 如果写了, 则读取指定的表. 可以是一张表, 也可以是多张表.
# 1张表的情况下, 返回的是: df对象.
# 多张表的情况下, 返回的是: 字典, 即: 表名做键, 该表的df对象做值.
df pd.read_excel(output/scientists_noindex.xlsx, sheet_name[test1, test2])
df # 字典
df[test1] # df对象