pandas速查笔记

本文详细介绍了Pandas库中数据读取的方法,包括读取CSV、TXT和Excel文件,并展示了如何查看数据属性、删除重复数据、合并数据、进行数据统计和描述性分析。还涵盖了设置索引、修改列名、处理缺失值、条件查询以及行列操作等核心操作,是Pandas入门学习的重要参考。
摘要由CSDN通过智能技术生成

import pandas as pd

pands 的数据读取:

pd.read_csv(fpath)

pd.read_excel(fpath)

#读取cvs文件
fpath = r"./文件名.csv"
data = pd.read_csv(fpath)

#读取txt文件
fpath = r"./文件名.txt"
data = pd.read_csv(fpath,  sep="\t",  header=None, names=['属性1', '属性2', '属性3'])
'''读取txt文件其实和读取csv一样,参数sep设置分隔符,header设置有无表头,
   name可以设置每一列的属性名称,不过很少读取csv就是了,了解一下'''

#读取excel
fpath = r"./文件名.xlsx"
data = pd.read_excel(fpath,sheet_name='工作薄名称',header=1,
                     usecols=[0,1,3], dtype={0:str,1:float}) 
'''
fpath表示文件目录
sheet_name参数为读取工作薄的名称
header表示用第几行作为表头,默认header=0,即默认第一行为表头
usecols表示读取的列数,输入一个list,读取数字对应的列数
dtype表述读取列数据的格式,dtype={0:str,1:float}表示第0列以str形式读取,第1列以float形式读取
'''


pands读取数据后,查看数据属性:

1、# 查看数据的形状,返回(行数、列数)
data.shape

2、# 查看列名列表
data.columns

3、# 查看索引列
data.index

4、# 查看前几行数据
data.head()

5、# 查看各个数据的计数
df["故障种类"].value_counts()

一些操作:

删除重复数据:

data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)

 
代码中subset对应的值是列名,表示只考虑这两列,将这两列对应值相同的行进行去重。
默认值为subset=None表示考虑所有列。
 
keep='first'表示保留第一次出现的重复行,是默认值。keep另外两个取值为"last"和False,
分别表示保留最后一次出现的重复行和去除所有重复行。
 
inplace=True表示直接在原来的DataFrame上删除重复项,而默认值False表示生成一个副本。

合并数据:

res = pd.concat([df1,df2,df3],axis=0,ignore_index=True)

参数axis=0表示上下合并,1表示左右合并,ignore_index=True表示忽略原来的索引

上下合并时,如果原来没有的列,会用nan填充:

df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                       'A': ['A0', 'A1', 'A2', 'A3'],
                       'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                        'C': ['C0', 'C1', 'C2', 'C3'],
                        'D': ['D0', 'D1', 'D2', 'D3']})
df3 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                        'C': ['C0', 'C1', 'C2', 'C3'],
                        'D': ['D0', 'D1', 'D2', 'D3']})
pd.concat([df1,df2,df3],axis=0)

 左右合并时,可能会出现同样列名的列:

df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                       'A': ['A0', 'A1', 'A2', 'A3'],
                       'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                        'C': ['C0', 'C1', 'C2', 'C3'],
                        'D': ['D0', 'D1', 'D2', 'D3']})
df3 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],
                        'C': ['C0', 'C1', 'C2', 'C3'],
                        'D': ['D0', 'D1', 'D2', 'D3']})
pd.concat([df1,df2,df3],axis=1)

描述性显示关于数据的简短统计摘要:

data.describe() 

 描述数据最大最小值、平均值、总数等

描述一列中各个值的统计数据:

data['区县'].value_counts(dropna=False)

dropna=False时,会把空值也进行统计

保存excel:

to_excel( excel_writer,sheet_name='sheet1',na_rep='空' ,index=False)

# excel_writer为表名,sheet_name为sheet名称,na_rep表示填充空数值的内容,index表示是否  保存 df 数据的索引到表格中

保存多个sheet:

import pandas as pd

# 创建一些示例数据
data1 = {'Column1': [1, 2, 3, 4],
         'Column2': ['A', 'B', 'C', 'D']}
data2 = {'Column3': [5, 6, 7, 8],
         'Column4': ['E', 'F', 'G', 'H']}

df1 = pd.DataFrame(data1)
df2 = pd.DataFrame(data2)

# 创建一个ExcelWriter对象
with pd.ExcelWriter('multi_sheet_example.xlsx', engine='xlsxwriter') as writer:
    # 将每个数据框写入不同的sheet
    df1.to_excel(writer, sheet_name='Sheet1', index=False)
    df2.to_excel(writer, sheet_name='Sheet2', index=False)

PS:请确保已经安装了openpyxlxlsxwriter库,以便Pandas能够写入Excel文件。可以根据需要选择其中一个库,只需将engine参数设置为'openpyxl'或'xlsxwriter'。

判断pd的值是否为nan:

pd.isnull( df ['故障种类'] )  #返回series

pd.isnull( df ['故障种类'][0] )  #返回 True or False

设置某一列为索引列:
df.set_index('name', inplace=True)

重置索引列:

data.reset_index()

修改列名:

df.rename(columns={'故障种类':'id','单号':'编码'},inplace=True)

判断是否包含字段:contains

df[ "故障种类" ].str.contains('中断')

#返回一个存储布尔值的DataFrame

判断是否以某个字段开头:startswith

df["tianqi"].str.startswith("晴")

#返回一个存储布尔值的DataFrame

比较df数值大小:

df["处理时长"]<60

#返回一个存储布尔值的DataFrame

特定的列填充空值:

fill_value = 0 # 要使用的填充值

df[‘某一列’].fillna(fill_value, inplace=True)

如果要全部填充所有列:df.fillna(fill_value, inplace=True)

复杂条件查询:

df.loc[(df["处理时长"]<=30) | (df["剩余时长"]>=15) & (df["是否恢复"]=='是') , :]

#将符合的数据以DataFrame返回

也可以定义函数进行复杂条件查询:

def query_my_data(df):
    return df["处理时长"]<=30) | (df["剩余时长"]>=15) & (df["是否恢复"]=='是')
    
df.loc[query_my_data, :]


新增数据列:

1、直接为新增的列名赋值,可以是list或Series:

df[ '新增列名' ] = list(data)

2、使用apply函数:

def get_wendu_type(x):
    if x["bWendu"] > 33:
        return '高温'
    if x["yWendu"] < -10:
        return '低温'
    return '常温'

# 注意需要设置axis==1,这是series的index是columns
df.loc[:, "wendu_type"] = df.apply(get_wendu_type, axis=1)

根据前一项或者后一项填充空值:

import pandas as pd

# 创建包含数据的DataFrame
data = {
    '型号': ['飞驰500', None, None, None, '飞驰530', None],
    '尺寸': ['18寸', '20寸', '22寸', '24寸', '18寸', '20寸'],
    '价格': [640, 666, 693, 735, 640, 666],
    '净重': [13.3, 14.0, 15.0, 16.0, 13.3, 14.0],
    '毛重(kg)': [16.0, 17.2, 17.5, 18.4, 16.0, 17.2],
    '保险毛重(kg)': [16.5, 17.5, 18.0, 19.0, 16.5, 17.5],
    '国内顺丰运费': [60, 64, 68, 71, 60, 64]
}

df = pd.DataFrame(data)

# 使用bfill进行后向填充
# 使用ffill进行前向填充
df['型号'].fillna(method='bfill', inplace=True)

# 打印填充后的DataFrame
print(df)


行列处理:

行排序:sort_values()

sort_values()是pandas中比较常用的排序方法,设计以下参数:

by : 指定某一列或者某几列

ascending : 是否升序排序,默认升序为True,降序则为False。如果是列表,则需和by指定的列表数量相同,指明每一列的排序方式

na_position : {‘first’,‘last’}, default ‘last'.(如果指定排序的列中有nan值,可指定nan值放在第一个还是最后一个)

inplace: 是否用排序后的数据集替换原来的数据,默认为False,即不替换

df.sort_values(by=['处理时长'],na_position='first',inplace=True)

列排序:

调整列顺序:

df = df[['用户','处理时长','责任部门','维护人员']]

调整index顺序:

df.index = range(1,len(df) + 1) # 将index改成从1开始

loc 函数 和 iloc 函数:

         df.loc方法,根据行、列的标签值查询 (df.loc可以覆盖写入)

         df.iloc方法,根据行、列的数字位置查询

使用df.loc查询和修改单个或者局部数值

#查询
df.loc['禅城','退单人员'] 
#索引为'禅城'这一行的,'退单人员'这一列的数据,返回一个数值
df.loc['禅城',['退单人员','结单信息'] ] 
#返回索引为'禅城'这一行的,'退单人员'和'结单信息'这两列的Series

#修改:
data.loc['禅城','退单人员'] = 'joke'
data.loc['禅城',['退单人员','故障种类']] = ['joke','业务中断']

使用df.loc修改整列数据

df.loc[:,'故障种类'] = df['故障种类'].str.replace("#","").astype('int32')

#其实也可以这样:
df.loc[:,'故障种类']=[int(x.split("#")[0]) for x in list(df[ '故障种类' ]) ]

'''将“故障种类”这一类的所有数据进行修改,去掉“#”并转化为整数类型'''

### 回答1: Pandas是一种Python数据分析库,它可以帮助用户处理和分析数据。Pandas速查手册中文版是一本Pandas速查手册,提供了Pandas常用的函数和方法的使用介绍,便于用户在实际应用场景中快速查阅和使用。该手册包含了Pandas的数据结构、数据的读取和写入、数据的选择和过滤、数据的处理和转换、数据的分析和计算等方面的内容。通过该手册,用户可以快速了解和学习Pandas,以及在数据分析和处理过程中使用Pandas的知识和技能。同时,该手册还提供了一些常见的数据操作案例和代码示例,帮助用户更好地理解和掌握Pandas的使用。总之,Pandas速查手册中文版pdf是一本非常实用的数据分析工具文献,可帮助Python程序员进行高效便捷的数据操作,提升工作效率。 ### 回答2: Pandas是一个基于Python语言的数据分析、处理库。Pandas速查手册中文版PDF,是一份详细、全面的Pandas使用手册,在使用Pandas时,可以作为方便的参考资料。 这份手册的主要内容涵盖了Pandas中各种数据结构、数据操作方法、及应用案例等方面,是新手入门、熟手复习的很好工具。同时,速查手册PDF版在使用时方便快捷,可以随时随地查阅。 当需要对数据进行清洗、整合、分析时,使用Pandas可以提高工作效率,如果对Pandas掌握得不够熟悉,速查手册可以帮助了解数据相关的Python代码的写作规范、Python代码的编写方法等,帮助使用者快速了解相关知识点。 Pandas速查手册中文版 PDF 是数据分析领域中的一个实用工具,尤其适合需要在数据处理过程中提高效率的人群。 ### 回答3: Pandas速查手册中文版PDF是一本非常实用的数据分析工具书,主要介绍了Pandas库的基本使用方法和常见操作方式。该手册的特点是简洁明了,涵盖面广,可以帮助用户快速地找到需要的知识点和操作步骤。 这本手册分为三个部分,第一部分介绍了Pandas的数据结构、基本操作和常用函数;第二部分介绍了数据清洗、合并和分组计算等高级操作;第三部分则是一些应用案例,包括如何使用Pandas处理具体的数据问题。 最值得称赞的是,该速查手册对Pandas中文别名的使用进行了充分的解释,让人容易理解并记住基础操作。此外,手册还提供了一些实用的技巧和应用案例,帮助用户更好地理解Pandas库的使用方法。 总的来说,如果你是初学者或已经掌握了一些Pandas知识的读者,这本Pandas速查手册中文版 PDF将是一个非常有用的参考工具。它不仅能够帮助你快速找到需要的操作步骤,还能帮助你理解Pandas库的一些高级用法,使你的数据分析工作更加得心应手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值