一篇文章理清Python-Pandas基础
目录
一、panda的概念
二、相关性质
1.数据处理与分析:读取、存储、清洗、转化(运算)。
2.数据探索与可视化:与数据可视化库(如Matplotlib和Seaborn)结合使用。
3.数据重塑和透视
三、Pandas速通
1.从表中创建DataFrame:
2.得到DataFrame的大小(行、列数):
3.显示DataFrame的前2行:
4.数据选取:
5.创建新列:
1.insert插入:
2.直接赋值插入:(该方法还可用于更改列的数据)
3.关联插入:比如有单价和数量,需要插入一列总额
6.删去重复的行:
7.删去丢失的数据:
8.重命名列:
example:
9.改变数据类型:
10.填充缺失值:
11.重塑数据:
1.连结
数据可视化: 该图片来源于:LeetCode官方题解
2.透视
数据可视化:该图来源于:LeetCode官方题解
3.融合:
数据可视化:该图来源于:LeetCode官方题解
12.方法链:
数据可视化:该图来源于:LeetCode官方题解
四、总结
一、panda的概念
Python的Pandas库主要用于高效地处理和分析结构化数据,如进行数据读取、清洗、转换、统计分析以及可视化等操作。
二、相关性质
1.数据处理与分析:读取、存储、清洗、转化(运算)。
2.数据探索与可视化:与数据可视化库(如Matplotlib和Seaborn)结合使用。
3.数据重塑和透视
三、Pandas速通
1.从表中创建DataFrame:
1.导入pandas:
import pandas
2.将列表转为数据结构:
student_data=[
['李', 15],
['赵', 11],
['孙', 11],
['钱', 20]]
根据列表内容给定标题(columns)
columns_student=['姓','年龄']
使用pandas下的DataFrame库来建立数据表(frame)
frame=pd.DataFrame(student_data,columns=columns_student)
之后便得到一个学生成绩表
import pandas as pd
student_data=[
['李', 15],
['赵', 11],
['孙', 11],
['钱', 18]]
columns_student=['姓','年龄']
frame=pd.DataFrame(student_data,columns=columns_student)
print(frame)
#
姓 年龄
0 李 15
1 赵 11
2 孙 11
3 钱 18
2.得到DataFrame的大小(行、列数):
Pandas 的每个 DataFrame 都有一个 shape 属性。调用时,返回一个元组 (number of rows, number of columns)。
print(frame.shape[0],frame.shape[1])
3.显示DataFrame的前2行:
pandas库的head方法:用于在 DataFrame 上返回前 n 行。如果省略 n,则默认为返回前 5 行。
print(frame.head(2))
#
姓 年龄
0 李 15
1 赵 11
4.数据选取:
loc属性:pandas库里基于标签来选择数据的方法之一。
loc用法为:结构.loc[结构[标题]==?,[其他需要的列]]
print(frame.loc[frame['姓']=='孙',['年龄']])
#
年龄
2 11
5.创建新列:
1.insert插入:
frame.insert(1,'abc',0)
#
姓 abc 年龄
0 李 0 15
1 赵 0 11
2 孙 0 11
3 钱 0 18
2.直接赋值插入:(该方法还可用于更改列的数据)
frame['abc']=0
#
姓 年龄 abc
0 李 15 0
1 赵 11 0
2 孙 11 0
3 钱 18 0
3.关联插入:比如有单价和数量,需要插入一列总额
df['C'] = df['A'] + df['B']
print(df)
6.删去重复的行:
import pandas as pd
student_data=[
['李', 15],
['赵', 11],
['孙', 11],
['钱', 18],
['李', 19]]
columns_student=['姓','年龄']
frame=pd.DataFrame(student_data,columns=columns_student)
frame.drop_duplicates(subset='姓', keep='first', inplace=True)
print(frame)
#
subset='姓':这意味着我们只考虑基于 email 列的重复项。
keep='first':这表明我们希望保留任何重复姓名的第一个匹配项,并删除后续的匹配项。(end=类似用法)
inplace=True:这意味着更改将直接对传入的 DataFrame(frame)进行,而不会返回新的 DataFrame。
7.删去丢失的数据:
pandas库中的dropna方法:
dropna一般结构:
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
#
dropna 函数参数定义:
axis: 它可以是 {0 or 'index'#行, 1 or 'columns'#列}。默认为 0。
how: 确定当我们至少有一个 NAN 或全部 NAN 时,是否从 DataFrame 中删除行或列。
how='any': 如果存在任何 NAN 值,则删除该行或列(默认)。
how='all': 如果所有值都为 NAN,则删除该行或列。
thresh: 需要多少非 NAN 值。这是一个整型参数,需要最小数量的非 NAN 值才能保留行/列。
subset: 要考虑的另一个轴上的标签,例如,如果您正在删除行,则这些标签将是要包括的列的列表。当您只想考虑某些列中的 NAN 值时,这特别有用。
8.重命名列:
rename结构用法
DataFrame.rename(columns=None, axis=None, inplace=False, level=None, errors='raise')
#
level: 对于具有多级索引的 DataFrame,应当重命名标签的级别。
axis: 可以是 "index" 或 "columns"。确定是重命名索引还是重命名列。默认情况下,如果您提供 columns 参数,您将重命名列。
errors: 如果是 'raise',如果尝试重命名不存在的项,则会引发错误。如果设置为 'ignore',任何重命名项目的失败都将被忽略。
example:
import pandas as pd
student_data=[
['李', 15],
['赵', 11],
['孙', 11],
['钱', 18],
['李', 19]]
columns_student=['姓','年龄']
frame=pd.DataFrame(student_data,columns=columns_student)
frame.rename(columns={'姓':'叫什么'},inplace=True)
print(frame)
#
叫什么 年龄
0 李 15
1 赵 11
2 孙 11
3 钱 18
4 李 19
9.改变数据类型:
astype 函数: astype 函数用于将 pandas 对象强制转换为指定的数据类型(数据类型)。astype 可用于将熊猫对象强制转换为任何 dtype。astype 函数不会就地修改原始的 DataFrame,而是赋值给新的变量。
astype的一般结构:
DataFrame.astype({'列名':新类型}, copy=True, errors='raise')
如果 copy
设置为 False
,则只有在旧对象无法强制转换为所需类型的情况下才会创建新对象。
10.填充缺失值:
fillna 函数: fillna 是 Pandas 库中的一个函数,主要用于 Pandas Series 和 DataFrame 对象。它允许您使用指定的方法填充 NA/NaN 值。
example:
frame['年龄'].fillna(18,inplace=True)
也就是把年龄数据缺失的部分都填充为18。
11.重塑数据:
1.连结
数据可视化: 该图片来源于:LeetCode官方题解
pd.concat([df1,df2],axis=0)#0与行相对应,可以和垂直相联想。
pd.concat([df1,df2],axis=1)水平连结
2.透视
数据可视化:该图来源于:LeetCode官方题解
3.融合:
数据可视化:该图来源于:LeetCode官方题解
12.方法链:
数据可视化:该图来源于:LeetCode官方题解
四、总结
通过引入pandas库,可以用python对数据进行一定规律的运用。
2024.12.14
作者:xndx-Henry