上海涛飞专业网站建设,简洁汽车配件网站模板,湖南省绿色建筑信息平台,家居企业网站建设方案内容目录 一、pandas介绍二、数据加载和写出三、数据清洗四、数据转换五、数据查询和筛选六、数据统计七、数据可视化 pandas 是一个 Python提供的快速、灵活的数据结构处理包#xff0c;让“关系型”或“标记型”数据的交互既简单又直观。 官网地址: https://pandas.pydata.o… 内容目录 一、pandas介绍二、数据加载和写出三、数据清洗四、数据转换五、数据查询和筛选六、数据统计七、数据可视化 pandas 是一个 Python提供的快速、灵活的数据结构处理包让“关系型”或“标记型”数据的交互既简单又直观。 官网地址: https://pandas.pydata.org/
一、pandas介绍
pandas 有两个主要数据结构Series一维和 DataFrame二维, 可以处理多种类型的数据. 主要功能:
处理缺失数据以 NaN 表示无论是浮点数还是非浮点数数据 大小可变性可以向 DataFrame 和更高维度的对象插入和删除列自动和显式数据对齐对象可以显式地对齐到一组标签或者用户可以简单地忽略标签让 Series、DataFrame等自动在计算中对齐数据 按组操作功能: 用于对数据集执行分割-应用-合并操作既可用于聚合数据也可用于转换数据 多源数据转换: 将其他Python 和 NumPy 数据结构中的不规则、不同索引的数据转换为 DataFrame 对象智能的基于标签的切片、花式索引和大数据集的子集划分 直观的数据集合并和连接 灵活的数据集重塑和旋转轴的分层标记每个刻度可以有多个标签 强大的 IO 工具用于从CSV 和分隔符加载数据从 Excel文件、数据库加载数据以及保存/加载超快速 HDF5 格式的数据 时间序列的功能日期范围生成和频率转换移动窗口统计日期偏移和滞后。
Pandas结构:
import pandas as pddf pd.DataFrame({Name: [Braund, Mr. Owen Harris,Allen, Mr. William Henry,Bonnell, Miss. Elizabeth,],Age: [22, 35, 58],Sex: [male, male, female],}
)print(df)# Name Age Sex
# 0 Braund, Mr. Owen Harris 22 male
# 1 Allen, Mr. William Henry 35 male
# 2 Bonnell, Miss. Elizabeth 58 female其中DataFrame的每一列都是Series对象
print(type(df[Name]))
# class pandas.core.series.Series二、数据加载和写出 pandas支持多种形式的数据格式, 不仅可以在代码中显示的加载列表、数组等, 还可以引入外部文件, 支持的外部文件格式也较多 加载时调用对应的方法read_xxx()
# 数据加载
df pd.read_excel(./static/pd_file.xlsx)写出时调用对应的方法to_xxx()
df pd.to_excel(./static/pd_file_new.xlsx)三、数据清洗
dropna(axis0, how‘any’): 删除含有缺失值的行或列。
data {A: [1, 2, np.nan], B: [5, np.nan, np.nan], C: [1, 2, 3]}
df pd.DataFrame(data)# 删除含有缺失值的行
df_cleaned df.dropna(axis0, howany)
print(df_cleaned)fillna(valueNone, method‘ffill’, …): 用指定值或方法填充缺失值。
# 使用前一个有效值填充缺失值
df_filled df.fillna(methodffill)
print(df_filled)
drop(labels, axis0): 删除指定行或列。
# 删除第一行
df_dropped_row df.drop(0, axis0)
print(df_dropped_row)# 删除某列例如 B 列
df_dropped_col df.drop(B, axis1)
print(df_dropped_col)replace(to_replacevalue, valueNone): 替换指定值。
# 将缺失值替换为0
df_replaced df.replace(np.nan, 0)
print(df_replaced)rename(columns{old_name: new_name}, index{…}): 重命名列名或索引。
df_renamed df.rename(columns{A: NewA, B: NewB, C: NewC})
print(df_renamed)四、数据转换
生成列
# 对a列按照|分割, 取1、9、10列作为新列
df[[city,poi_1, poi_2]] df[a].str.split(|, expandTrue)[[0,8,9]]删除列
# 删除a列
df df.drop(columns[a])转换列格式
# 修改dt类型为datetime格式
df[dt] pd.to_datetime(df[dt])
# 处理日期为day、month、year
df[dt_day] df[dt].dt.strftime(%Y-%m-%d)
df[dt_month] df[dt].dt.strftime(%Y-%m)
df[dt_year] df[dt].dt.yearpivot(index, columns, values): 数据透视表操作。
# 示例数据
data {Category: [Fruit, Fruit, Vegetable, Fruit, Vegetable],Product: [Apple, Banana, Carrot, Orange, Potato],Sales: [100, 200, 150, 300, 250]
}df pd.DataFrame(data)# 使用pivot创建数据透视表以Category为行Product为列Sales为值
pivot_table df.pivot(indexCategory, columnsProduct, valuesSales)
print(pivot_table)pivot_table(index, values, aggfuncnp.mean, …): 创建带有聚合函数的数据透视表。
data {City: [New York, New York, San Francisco, San Francisco, Chicago, Chicago],Month: [Jan, Feb, Jan, Feb, Jan, Feb],Temperature: [5, 8, 12, 14, 3, 6]
}df pd.DataFrame(data)# 使用pivot_table计算每个月各城市的平均温度
pivot_table df.pivot_table(indexMonth, columnsCity, valuesTemperature, aggfuncnp.mean)
print(pivot_table)apply(func, axis0): 应用函数到DataFrame的行或列上。
# 示例DataFrame
df pd.DataFrame({A: [1, 2, 3], B: [4, 5, 6], C: [7, 8, 9]})# 定义一个计算平方的函数
def square(x):return x**2# 对DataFrame的每一列应用square函数
squared_df df.apply(square, axis0)
print(squared_df)groupby(byNone): 根据某一列或多列进行分组。
data {Category: [Fruit, Fruit, Vegetable, Fruit, Vegetable],Sales: [100, 200, 150, 300, 250]
}df pd.DataFrame(data)# 按Category列进行分组并计算Sales的总和
grouped_sales df.groupby(Category)[Sales].sum()
print(grouped_sales)五、数据查询和筛选
loc()方法 DataFrame和Series对象的一种索引器允许基于行和列的标签来选择数据。 语法: df.loc[row_selection, column_selection]其中row_selection和column_selection可以是单个标签、列表、切片或布尔数组 特性 支持“前闭后闭”的区间选择意味着如果用切片指定范围两端 的标签都会被包含在内。可以用来选取单行、单列、多行、多列或行与列的组合。不仅可以用于选择数据还可以用于修改现有数据或插入新数据。
import pandas as pddata {Country: [China, United States, India],Population: [1404200000, 332639102, 1393409038],Area (sq km): [9600000, 9372610, 3287263]
}
df pd.DataFrame(data)
df.set_index(Country, inplaceTrue)选取单列
population df.loc[:, Population]选取多列
subset df.loc[:, [Population, Area (sq km)]]选取特定行
china_data df.loc[China]选取行范围
us_to_india df.loc[United States:India]布尔索引
large_countries df.loc[df[Population] 1000000000]修改数据
df.loc[China, Population] 1444200000 # 更新中国人口数据插入新数据
df.loc[Brazil] [Brazil, 213993437, 8511965] # 新增巴西数据iloc()方法 DataFrame和Series对象的另一个重要索引器它提供了基于整数位置的数据选择和修改功能。与loc基于标签索引不同iloc完全依赖于数据在结构中的物理位置 语法df.iloc[row_selection, column_selection]其中row_selection和column_selection可以是整数、整数列表、切片或布尔数组来指定数据的位置 特性 支持整数索引的“左闭右开”区间选择意味着切片操作的结束位置是不包含在内的。适合于快速按位置访问或修改数据尤其是在处理没有明确标签或者标签不如位置重要时。不能直接使用列名或行标签进行索引只能使用整数位置。
选取单个元素
element df.iloc[1, 2] # 选取第二行第三列的元素选取整行或整列
second_row df.iloc[1, :] # 选取第二行
third_column df.iloc[:, 2] # 选取第三列选取多行多列
subset df.iloc[0:2, 1:3] # 选取前两行的第二列至第三列切片选择
last_two_rows df.iloc[-2:] # 选取最后两行的所有列布尔索引结合.iloc需先转换为位置
bool_index df[A] 1
position_based_bool_index df.index[bool_index]
rows_with_A_gt_1 df.iloc[position_based_bool_index]loc()和iloc()的区别 loc是通过标签来访问数据,而iloc是通过整数位置来访问数据在使用loc时,选择的行和列都是闭区间,即包括开始和结束位置;而在使用iloc时,选择的行和列都是左闭右开区间,即包括开始位置但不包括结束位置。loc可以使用布尔数组进行筛选,而iloc不支持。loc可以使用标签名和标签列表作为索引,而iloc只能使用整数作为索引。loc和iloc都支持使用冒号(:)来选择所有行或列,但是在使用loc时,冒号前后必须加上标签名或标签列表;而在使用iloc时,冒号前后可以省略,表示选择所有行或列。 使用案例
# 数据查询
# 查询某列
city df[city]# 按索引
# 查询第二列的所有行, 其中第一个为行, 第二个为列
name df.iloc[:,1]# 获取某些列
c1 df[[city,poi_1]]
c2 df.iloc[:,1:3]查询切片
# 按索引
# 查询第二列的所有行, 其中第一个为行, 第二个为列
name df.iloc[:,1]查询指定列 数据查询
# 数据查询
city df[city]
# 按索引
name df.iloc[:,1]
# 获取某些列
c1 df[[city,poi_1]]
c2 df.iloc[:,1:3]
print(name.head(5))
print(c2.head(5))
数据筛选
# 索引筛选
# 筛选前二十行数据
print(df.iloc[0:21, :])
# 或者
print(df.head(20))# 按条件筛选
# 获取广州的记录
df.set_index(city, inplaceTrue)
print(df.loc[广州])# 获取第二列广州市正骨医院的记录
print(df.loc[df[poi_1] 广州市正骨医院, :])六、数据统计
sum(), mean(), median(), min(), max(): 计算总和、均值、中位数、最小值、最大值。
# 示例数据
data {A: [1, 2, 3, 4, 5],B: [5, 15, 10, 20, np.nan],C: [7, 8, 9, 10, 11]}df pd.DataFrame(data)# 计算B列的总和、均值、中位数、最小值、最大值
total_B df[B].sum()
mean_B df[B].mean()
median_B df[B].median()
min_B df[B].min()
max_B df[B].max()print(fSum of B: {total_B})
print(fMean of B: {mean_B})
print(fMedian of B: {median_B})
print(fMin of B: {min_B})
print(fMax of B: {max_B})count(): 非NA值的数量。
# 计算每列的非空值数量
non_na_counts df.count()
print(non_na_counts)corr(): 计算相关系数矩阵。
# 计算相关系数矩阵
correlation_matrix df.corr()
print(correlation_matrix)cov(): 计算协方差矩阵。
# 计算协方差矩阵
covariance_matrix df.cov()
print(covariance_matrix)sort_values(by, ascendingTrue): 根据一列或多列的值排序。
# 按A列升序排序
sorted_df df.sort_values(byA, ascendingTrue)
print(sorted_df)rank(method‘average’): 计算每行或每列的排名。
# 计算B列的排名
ranked_df df[B].rank(methodaverage)
print(ranked_df)七、数据可视化
使用Matplotlib的基本绘图 首先确保已经安装了matplotlib库如果没有安装可以通过pip安装pip install matplotlib。
import pandas as pd
import matplotlib.pyplot as plt# 示例数据
data {Year: [2000, 2001, 2002, 2003, 2004],Sales: [10, 15, 20, 25, 30]}
df pd.DataFrame(data)# 绘制折线图
plt.figure(figsize(10, 5))
df.plot(kindline, xYear, ySales, colorblue)
plt.title(Sales Over Years)
plt.xlabel(Year)
plt.ylabel(Sales)
plt.show()总之, pandas的功能十分丰富且强大, 这里只是列举了冰山一角, 更多内容可以查看官网.