【Python数据处理篇——DataFrame数据准备】DataFrame的创建、增删改查、数据导入等

欢迎访问我搞事情的【知乎账号】:Coffee
以及我的【B站漫威剪辑账号】:VideosMan
若我的笔记对你有帮助,请用小小的手指,点一个大大的赞哦。

关于DataFrame的相关知识,我还进行了汇总,欢迎点赞收藏!!

【Python学习笔记—保姆版】第四章—关于Pandas、数据准备、数据处理、数据分析、数据可视化


2、数据准备

pandas和numpy

import pandas as pd
import pandas as Series
import numpy as np
from pandas import DataFrame
  • pandas:生成数据框,处理数据框

    import pandas as pd
    
    DataFrame、Series
    
  • numpy:一些特殊的数值,可视化的使用

    import numpy as np
    

    比如

    方法解释
    np.nan空值(缺失值)
    np.inf无穷( -inf 或 +inf )
    np.arange(16)返回一个有终点和起点的固定步长的排列
    np.random生成随机数
    np.array([1,2,3,4])返回一个自定义的排列
    方法效果
    numpy.size人数
    numpy.mean平均值
    numpy.var方差
    numpy.std标准差
    numpy.max最高分
    numpy.min最低分

创建DataFrame

1.标准格式创建:

        >>> from pandas import DataFrame
        >>> df = DataFrame(np.arange(16).reshape(4,4),index=['a','b','c','d'],columns =['one','two','three','four'])
        >>> df
           one  two  three  four
        a    0    1      2     3
        b    4    5      6     7
        c    8    9     10    11
        d   12   13     14    15

2 .传入等长的列表组成的字典来创建:

 >>> data = {'a':[5,8],'b':[1,0]}
     >>> df = DataFrame(data)
     >>> df
        a  b
     0  5  1
     1  8  0

同时也可以指定列索引序列

    >>> df = DataFrame(data,columns = ['b','a'])
    >>> df
       b  a
    0  1  5
    1  0  8

3 传入嵌套字典(字典的值也是字典)创建DataFrame

其中我们可以知道,外层键是列索引,内层子键是行索引

  >>> nest_dict={'shanghai':{2015:100,2016:101},'beijing':{2015:102,2016:103}}
   
  >>> df = DataFrame(nest_dict)
  >>> df
        shanghai  beijing
  2015       100      102
  2016       101      103
  >>> nest_dict={'shanghai':{2015:100,2016:101},'beijing':{2015:102,2014:103}}
  >>> df = DataFrame(nest_dict)
  >>> df
        shanghai  beijing
  2014       NaN    103.0
  2015     100.0    102.0
  2016     101.0      NaN

增删改查

想偷懒,这里直接引用一下别人写的漂亮文章

(1 封私信 / 4 条消息) dataframe修改某列的值 - 搜索结果 - 知乎 (zhihu.com)

(20条消息) pandas:dataframe在指定位置插入一行数据_碧海蓝天-CSDN博客_dataframe插入一行数据

(22条消息) Python中pandas dataframe删除一行或一列:drop函数_海晨威-CSDN博客_dataframe drop

1.增加值

1.增加列。直接为不存在的列赋值就会创建新的列

原始数据

df['Hefei'] = 1
df

shanghai beijing Hefei
2014 NaN 103.0 1
2015 100.0 102.0 1
2016 101.0 NaN 1

2.增加行

利用loc方法,当然也可以使用append方法,不过传入的需要是字典形式

>>> df.loc[4]={'shanghai':5,'beijing':13, 'Hefei':50}
>>> df
      shanghai  beijing  Hefei
2014       NaN    103.0      1
2015     100.0    102.0      1
2016     101.0      NaN      1
4          5.0     13.0     50
>>> df.loc[2]={'shanghai':5,'beijing':13, 'Hefei':50}
>>> df
      shanghai  beijing  Hefei
2014       NaN    103.0      1
2015     100.0    102.0      1
2016     101.0      NaN      1
4          5.0     13.0     50
2          5.0     13.0     50
3.删除行和列:axis代表选中的是行还是列,列是1,行是2.inplace代表有没有真正删除
  >>> df.drop('Hefei',axis = 1,inplace = True)
  >>> df
       shanghai beijing
  2014      NaN     103
  2015      100     102
  2016      101     NaN
  4           5      13
  2           5      13
  3           5      13
  
  df.drop(3,axis = 0,inplace = True)
  >>> df
       shanghai beijing
  2014      NaN     103
  2015      100     102
  2016      101     NaN
  4           5      13
  2           5      13

改操作主要记住就是从列开始

>>> df
     shanghai beijing
2014        6       6
2015      100     102
2016      101     NaN
4           5      13
2           5      13
>>> df[:3]
     shanghai beijing
2014        6       6
2015      100     102
2016      101     NaN
>>> df[1] = 3
>>> df
     shanghai beijing  1
2014        6       6  3
2015      100     102  3
2016      101     NaN  3
4           5      13  3
2           5      13  3

DataFrame相关

df.info():          # 打印摘要
df.describe():      # 描述性统计信息
df.values:          # 数据 <ndarray>
df.to_numpy()       # 数据 <ndarray> (推荐)
df.shape:           # 形状 (行数, 列数)
df.columns:         # 列标签 <Index>
df.columns.values:  # 列标签 <ndarray>
df.index:           # 行标签 <Index>
df.index.values:    # 行标签 <ndarray>
df.head(n):         # 前n行
df.tail(n):         # 尾n行
pd.options.display.max_columns=n: # 最多显示n列
pd.options.display.max_rows=n:    # 最多显示n行
df.memory_usage():                # 占用内存(字节B)

np.random.seed(1234)
d1 = pd.Series(2*np.random.normal(size = 100)+3)
d2 = np.random.f(2,4,size = 100)
d3 = np.random.randint(1,100,size = 100)
d1.count()  #非空元素计算
d1.min()    #最小值
d1.max()    #最大值
d1.idxmin() #最小值的位置,类似于R中的which.min函数
d1.idxmax() #最大值的位置,类似于R中的which.max函数
d1.quantile(0.1)    #10%分位数
d1.sum()    #求和
d1.mean()   #均值
d1.median() #中位数
d1.mode()   #众数
d1.var()    #方差
d1.std()    #标准差
d1.mad()    #平均绝对偏差
d1.skew()   #偏度
d1.kurt()   #峰度
d1.describe()   #一次性输出多个描述性统计指标

np.nan   #赋空值

一、某列所有值

df['a']#取a列
df[['a','b']]#取a、b列

二、某行所有值

# 前n行,后n行
df.head(n)
df.tail(n)

#iloc只能用数字索引,不能用索引名------(左闭右开)
df.iloc[0:2]#前2行
df.iloc[0]#第0行
df.iloc[0:2,0:2]#0、1行,0、1列
df.iloc[[0,2],[1,2,3]]#第0、2行,1、2、3列

# 选取等于某些值的行记录 用 ==
df.loc[df['column_name'] == some_value]
 # 选取某列是否是某一类型的数值 用 isin
df.loc[df['column_name'].isin(some_values)]
 # 多种条件的选取 用 &
df.loc[(df['column'] == some_value) & df['other_column'].isin(some_values)]
 # 选取不等于某些值的行记录 用 !=
df.loc[df['column_name'] != some_value]
 # isin返回一系列的数值,如果要选择不符合这个条件的数值使用~
df.loc[~df['column_name'].isin(some_values)]
  #提取出某行某列
  li=list(df.columns)
  df.iloc[[3,4,8],[li.index('animal'),li.index('age')]]

三、某行某列对应值df_signal[‘a’].iloc[-1]

#iat取某个单值,只能数字索引df.iat[1,1]#第1行,1列#at取某个单值,只能index和columns索引df.at[‘one’,‘a’]#one行,a列

四、删除特定行

   # 要删除列“score”<50的所有行:
   df = df.drop(df[df.score < 50].index)
   df = df.drop(df[df['score'] < 50].index)
    
   df.drop(df[df.score < 50].index, inplace=True)
   df.drop(df[df['score'] < 50].index, inplace=True)
   # 多条件情况
   # 可以使用操作符: | 只需其中一个成立, & 同时成立, ~ 表示取反,它们要用括号括起来。
   # 例如删除列“score<50 和>20的所有行
   df = df.drop(df[(df.score < 50) & (df.score > 20)].index

五、Python DataFrame 按条件筛选数据

点击查看更多内容

比如我想查看id等于11396的数据。
pdata1[pdata1['id']==11396]
pdata1[pdata1.id==11396]

查看时间time小于25320的数据。
pdata1[pdata1['time']<25320]
pdata1[pdata1.time<25320]

查看time小于25320且大于等于25270的数据
pdata1[(pdata1['time'] < 25320)&(pdata1['time'] >= 25270)]

可以根据筛选条件查看某几列
pdata1[(pdata1['time'] < 25320)&(pdata1['time'] >= 25270)][['x','y']]
注意多个条件要加括号后在&|

六、排序

点击查看更多内容

#表示pd按照xxx这个字段排序,inplace默认为False,如果该值为False,那么原来的pd顺序没变,只是返回的是排序的
pd.sort_values("xxx",inplace=True)

数据导入

从excel导入

from pandas import read_excel
df = read_excel('e://rz2.xlsx')
df

从csv导入

from pandas import read_csv 
path4 = 'C:\\Users\\admin\\Desktop\\大数据爬虫2\\合并\\主键外连接.csv'
df5 = read_csv(path4,engine='python')
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值