目录
1.保存数据
2.数据类型以及转换
1.数据类型:
2. 使用astype()方法
3. 使用to_numeric()方法
3.建立索引
1. 创建时直接指定索引
2. 使用.set_index()方法
3.指定某列为索引列
4.将索引还原变量列
4.DataFrame的索引和切片
1.选择列
2.按行列索引
1.保存数据
Pandas 是一个强大的 Python 数据分析库,它提供了很多便捷的方法来保存数据到不同的文件格式中。以下是一些常用的方法来保存 Pandas DataFrame 数据:
保存数据至外部文件:
df.to_csv( filepath_or_buffer :要保存的文件路径 sep =:分隔符 columns :需要导出的变量列表 header = True :指定导出数据的新变量名,可直接
提供 list index = 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)
2.数据类型以及转换
1.数据类型:
float
int
string
bool
datetime64[nsr] datetime64[nsr,tz] timedelta[ns]
category
object
df.dtypes :査看各列的数据类型
df.dtypes
2. 使用astype()
方法
astype()
是Pandas中最常用的数据类型转换方法。它可以用于DataFrame或Series,并允许你指定新的数据类型。
import pandas as pd # 创建一个示例DataFrame
df = pd.DataFrame({ 'A': [1, 2, 3, 4], 'B': [5.1, 6.2, 7.3, 8.4], 'C': ['a', 'b', 'c', 'd']
}) # 将列'B'的类型转换为int
df['B'] = df['B'].astype(int) # 将列'A'的类型转换为float
df['A'] = df['A'].astype(float) # 查看转换后的DataFrame的dtype
print(df.dtypes)
可以通过 df. apply 来批量逬行多列的转换 pd. to_numeric (df .cloumn)
#转换单列
pd.to_numeric(df.软件)
#选择多列进行转换
df [['cloumn1'
,
'cloumn2']].astype (' str' ) .
apply (pd. to_numeric) . dtypes
3. 使用to_numeric()
方法
当你尝试将包含非数字字符串的列转换为数值类型时,astype()
方法可能会引发错误。此时,可以使用pd.to_numeric()
方法,它提供了更灵活的错误处理方式(如忽略错误或填充NaN)。
# 假设DataFrame中有一列包含一些非数字的字符串
df['D'] = ['1', '2', 'three', '4'] # 尝试转换为float,忽略错误
df['D'] = pd.to_numeric(df['D'], errors='coerce') # 查看结果,'three'被转换成了NaN
print(df['D'])
3.建立索引
新建数据框时建立索引所有的数据框默认都已经使用从 0 开始的自然数索引,因此这里 的"建立”索引指的是自定义索引
1. 创建时直接指定索引
import pandas as pd # 自定义索引的DataFrame
data = {'Name': ['Tom', 'Jane', 'Alice', 'Mike'], 'Age': [20, 21, 19, 18]}
index_labels = ['row1', 'row2', 'row3', 'row4']
df = pd.DataFrame(data, index=index_labels) print(df)
2. 使用.set_index()
方法
如果你已经有一个DataFrame,并希望使用其中的一列或多列作为索引,可以使用.set_index()
方法。这会将指定的列或列的组合设置为新的索引,并返回一个新的DataFrame(如果你希望原地修改原DataFrame,可以使用inplace=True
)。
# 假设df是上面创建的DataFrame
# 使用'Name'列作为新索引
df_new_index = df.set_index('Name') print(df_new_index)
3.指定某列为索引列
df.set_index( keys :#被指定为索引的列名,复合索引用 list:格式提供 drop = True :#建立索引后是否删除该列 append = False :#是否在原索引基础上添加索引,默认是直接替换原索引 inplace = False :#是否直接修改原数据框 )df_new = df.set_index (keys=['学号','性别'],drop = False)
df_new = df.set_index (keys='学号', append=True, drop=False)
4.将索引还原变量列
df.reset_index(
drop = False :#是否将原索引直接删除,而不是还原为变量列
inplace = False :#是否直接修改原数据框
)
df.set_index (['col1','col2','col3'])
df.reset_index ()#将索引全部还原为变量
df.reset_index (drop=True)#是否删除 index 列
4.DataFrame的索引和切片
1.选择列
当想要获取 df 中某列数据时,只需要在 df 后面的方括号中指明要 选择的列即可。如果是 一列,则只需要传入一个列名;如果是同时选择多
#获取一列
df[col]
#获取多列
df[[col1 , col2]]
除了传入具体的列名,我们可以传入具体列的位置即第几行对数据进行选取通过传入位置来获取数据时需要用到 iloc 方法。
df.iloc[,[0,2]]
2.按行列索引
选择 DataFrame对象按照行列检索获取,可以使用loc和iloc函数,方括 号中逗号之前的部分表示要获取的行的索引,如果输入一个冒号, 或不输入任何数值表示获取所有的行或列,逗号之后方括号表示要 获取的列的索引。
df.loc[普通行索引,普通列索引]
df.iloc[位置行索引,位置列索引]
import numpy as np
import pandas as pd
data=pd.DataFrame(np.arange(12).reshape(3,4),
index=list('abc'),columns=list('ABCD'))
#获取行为'b'的行
data.loc['b']
#使用iloc获取,行为'b'的行,行号为1
data.iloc[1]
获取满足条件的行
df[df[“支出”]>10]
df[(df[“支出”]>10) & (df[“性别”]=='女')]