Pandas的使用

本文详细介绍了Pandas的使用,包括Series和DataFrame数据结构,数据读取,缺失值处理,数据操作如取值、切片、索引,运算,以及DataFrame的创建、追加、选择、排序和统计分析。此外,还涵盖了文件读写、合并与拼接、编码转换以及绘图等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import pandas as pd

数据结构和数据分析

两种数据结构:

Series

索引值可以重复(自定义)

DataFrame

一组有序的列,每列可以是不同的值类型(数值、字符、布尔等)

读excle文件

# data1 = pd.read_excel('C:\\Users\\Administrator\\Desktop\\remmand.xlsx')
# data = data1.values
# data = data.T

Series

构建出来为一列数

创建序列

s=pd.Series(data,index,dtype,copy)
data的数据类型:
	列表: data=[1,2,3,4]
    	a=pd.Series([1,2,3],index=['a','b','c'],dtype='int',name='something')
    一维数组: data=np.array([1,2,3,4])
    	d=pd.Series(np.array([1,2,3]),dtype='int',name='something')
    标量: data=5
    	b=pd.Series(5,index=['a','b','c'],dtype='int',name='something')
    字典型(字典的键用于构建索引): data={'a':1,'b':2}
    	c=pd.Series({'a':1,'b':2,'c':2},dtype='int',name='something')

基本属性(赋值、获取)

  • s.index
  • s.value
  • s.name
  • s.dtype
  • s.shape
  • len(s) [说明:包含缺失值],s.count() [说明:不包含缺失值]
  • s.unique() [不重复的值]
  • s.value_counts() : 选出各个value的频数

缺失值的操作

给缺失值一个预设

s.fillna(值)

删除缺失值

s.dropna()

数据操作

取值

  • 单行 : s[0]/s[‘索引’]
  • 指定行 : s[[0,3]] => 0行和3行 ; s[[‘a’,‘c’]] ==> a行和c行(a和c为索引)
  • 前后几行 : s.head(值)/s.tail(值) => 默认值为5
  • 修改/增加值 : s[‘a’]=3

切片

  • s[:2] ==> 0-1行
  • s[-2:] ==> 访问最后两个元素

索引

  • 按索引标签索引
    单个:
    s[‘a’] #a为索引值
    多个:
    s[[‘a’,‘c’]] #a、c为索引值
  • 布尔索引
    s[s>条件(s.mean()等)]

运算

两个运算的单元必须索引和长度一样,不一样,在缺省位置自动补充Nan

s1=pd.Series([1,2,3],index=['a','b','c'])
s2=pd.Series([3,2,1],index=['a','b','c','d'])

计算
s1.add(s2,fill_value=值)
s1.sub(s2,fill_value=值)
s1.mul(s2,fill_value=值)
s1.div(s2,fill_value=值)

DataFrame

创建

df=pd.DataFrame(data,index,columns,dtype,copy)

data:
    列表:
        data=[1,2,3,4]
        data=[[1,2],[3,4]]
        字典形式(键默认为列名): data=[{'a':1,'b':2},{'a':3,'b':4,'c':5}]
    序列:
    	data={'one':pd.Series([1,2,3],index=['a','b','c']),'two':pd.Series([1,2],index=['a','b'])}
    字典:
    	data={'one':[1,2,3,4],'two':[5,6,7,8]}
    多维数组:
    data是另一个DataFrame
    df里是层次索引

数据操作

追加一列

  • df[‘four’]=df[‘one’]+df[‘three’]

取值

  • 列选择:df[‘one’]
  • 列添加:df[‘three’]=pd.Series([10,20,30],index=[‘a’,‘b’,‘c’])
  • 列删除:
    • del df[‘one’] :在原数据上进行操作
    • df.drop([‘a’],axis=1) : 返回一个新数据
  • 列名称的修改:df.columns=[’’,’’] 给个新的名字

  • 行切片: df[1:]
  • 列中前两行: df[‘one’][:2]
  • 选择前后几行:df.head(n) df.tail(n) => n不传值默认是5
  • 按标签选择:
    • 选择特定的行 df.loc[‘a’] / df.loc[[‘s’]]
    • 按行与列的名称选择某值 df.loc[‘a’,‘one’] // df.at[‘a’,‘one’]
    • 通过标签选择多轴:df.loc[:,[‘one’,‘two’]]
  • 按位置选择
    • 选择特定的行: df.iloc[0] / df.iloc[[0]]
    • 按行与列的名称选择某值: df.iloc[0,0] / df.iat[0,0]
    • 通过标签选择多轴: df.iloc[[0,1],[0,1]] / df.iloc[0:3,:]
  • 附加行
    • dfa=pd.DataFrame([[5,6],[7,8]],index=[‘e’,‘f’],columns=[‘one’,‘two’])
    • df.append(dfa)

布尔索引

df[df.one>0] df[df<0]

过滤: df[df[‘two’].isin([2,3])]

编码区分:

pd.get_dummies(df[[‘dist’,‘floor’]])

解决共线性

随意删除两列(不同分类的列)

文件读取

pd.read_csv(‘文档路径’,sep=‘ :’,header=None)

基本属性

  • df.index
  • df.columns
  • df.values
  • df.shape
  • df.info( ) : 获取数据的基本信息
  • df.count() : 非Nan 值得数量
  • df.dtypes

排序

  • df.sort_index(ascending=False) : 行索引排序,排索引 ,ascending: 是否升序
  • df.sort_values(by=‘列索引’,ascending=False) : by以哪列为准

藐描述性统计

  • df.describe() : 是用来计算有关DataFrame列的统计信息的摘要
  • df.mean() 、 df.median()
  • df.std() 标准差
  • df.cumsum 累计总和
  • df.min()/df.max()
  • df.idxmin() /df.idmax () 取得最值对应的索引

应用函数

apply()方法沿DataFrame的轴应用任意函数。默认情况下,操作按列执行

  • df.apply(np.mean)
  • df.apply(np.mean,axis=1)
  • df.apply(lambda x:x.max()-x.min()) // x.replace()

缺失数据处理

检查是否存在Nan/缺失数据:

df.isnull().sum()

去除缺失值:

  • df.dropna()
  • df.dropna(how=‘all’) => all:全是缺失值时删除; any : 有缺失值时删除
  • df.dropna(axis=1) =》 列方向操作

用预备值填充

df.fillna(de.mean())

拼接: concat

  • pd.concat([s,s2],axis=1,key=[‘one’,‘two’])
  • pd.concat([df1,df2],axis=1,join=‘outer’)
  • df1.concat(df2,how=‘outer’) => 等价于上一个

合并:merge

df1 df2有共同的标签

  • pd.merge(df1,df2,how=‘left’,on=‘X1’)
  • pd.merge(df1,df2,how=‘right’,on=‘X1’)
  • pd.merge(df1,df2,how=‘inner’,on=‘X1’)
  • pd.merge(df1,df2,how=‘outer’,on=‘X1’)

导入导出

http://pandas.pydata.org/pandas-docs/stable/api.html#input-output

绘图

http://pandas.pydata.org/pandas-docs/version/0.13.1/visualization.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值