numpy和pandas学习,day1
文章目录
前言
Numpy(Numerical Python) 是 Python语言的一个第三方库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。Numpy是一个运行速度非常快的数学库,主要用于数组计算。
Pandas是基于NumPy数组构建的,也是Python语言的第三方库,Pandas使数据预处理、清洗、分析工作变得更快更简单,主要用于数据分析。
Pandas是专门为处理表格和混杂数据设计的,相当于Python的Excel,而Numpy更适合处理统一的数组数据。
Numpy和Pandas都是第三方库,需要预先安装好后才能导入使用,如果安装了Anaconda,则不必另外安装(因为Anaconda会自动安装很多数据分析用的第三方库)。
最近将和读者一起学习一下简单的numpy和pandas的用法
本文是第一篇。
一、正常导入需要的pandas和numpy包
import pandas as pd
import numpy as np
接下来我们将开始这两个包的简单讲解实例
二、使用步骤
1.创造DataFrame
在字典中以键值对的形式进行数据的编写,其中键是列名,值是列的值,列一般以数组的形式呈现,每一个键值对用逗号隔开。
data = {"grammer":['Python', 'C', 'Java', 'GO', np.NaN, 'SQL', 'PHP', 'Python'],
"score":[1.0, 2.0, np.NaN, 4.0, 5.0, 6.0, 7.0, 10.0]}
df = pd.DataFrame(data)
df
2.读取符合要求的某一行数据
找出df中grammer列等于Python的行。
方法一好理解,方法二中的contains方法将返回布尔值,由于df中存在NAN,所以又加了一步fillna,将NAN的值全部替换为False,fillna的作用是替换列中的NAN值,将其替换为value,而inplace则是是否在原df上修改。
#方法一
df[df['grammer']=='Python']
# 方法二
result = df['grammer'].str.contains('Python') #该列是否包含Python,返回布尔值
result.fillna(value=False,inplace=True) # 将NAN变为False,注意False不能加''
df[result]
#读取
df[df['score']>3] # 找出score中大于三的列
df[(df['score']>3) & (df['score']<6)] # popularity大于3小于6的列,主要&连接的两边是()保住的
df[df['score']==df['score'].max()] # 提取出popularity最大值的行
3.读取所有的列名
df.columns #输出df所有列名
4.修改列名
df.rename(columns={'score':'popularity'},inplace=True) #修改列名
5.统计某一列中的各个数据出现次数
统计grammer列中,每一种语法在数据中出现的次数
df['grammer'].value_counts() #统计grammer列中每个属性出现的次数
6.使用上下平均值替换空值
这个用的是上文中提到的替换空值函数fillna,即使用value的值替换NAN值,而这段的value为df[‘popularity’].interpolate()是popularity的列的NAN处的上下值的平均值。
df['popularity'].fillna(value=df['popularity'].interpolate(),inplace=True) #用上下值的平均值进行替换
7.统计,删除重复值
删除重复行中的keep为保留,可以是first,last等,为保留第一个或最后一个。
df.duplicate().sum() #统计重复的皇叔
df.drop_duplicates(['grammer'],keep='first') #删除grammer列中重复的行
8.计算某列的统计值
计算某列的统计值,统计值为一些统计函数,如mean,max,min等。
df['popularity'].mean() #计算popularity的平均值
df['popularity'].min() #计算popularity的最小值
9.将某列数据转换为列表
df['grammer'].to_list() #将grammer列变为列表
9.将DataFrame保存为csv文件
df.to_csv('test.csv') # 将dataframe保存为csv文件
10.查看行列数
df.shape #查看行列数
11.插入,删除列,交换两个列的位置
#交换两个列的位置
temp = df['popularity']
df.drop(labels=['popularity'],axis = 1,inplace = True) #删除grammer列
df.insert(0,'popularity',temp) #插入一列,索引为0,列名为popularity
df
drop函数用于删除某列,labels后是一个列表,里面是要删除的列名,axis=1,代表是按列删除
insert函数则是插入列,0是插入的索引,popularity是列名,temp是插入的数据
12.生成数列
np.random.randint(0,100,20) #生成20个0到100的随机数
np.arange(0,200,10) #生成固定步长
np.random.normal(0,1,20) #生成20个随机分布(正态分布的数)
13.返回索引位置
np.array(df[‘score’] % 5 ==
0)返回的是相应数量的布尔值列表,而argwhere函数则是找出列表中的True值并返回索引列表
data = {"grammer":['Python', 'C', 'Java', 'GO', 'css', 'SQL', 'PHP', 'Python'],
"score":[1.0, 2.0, 6.0, 4.0, 5.0, 6.0, 7.0, 10.0]}
df = pd.DataFrame(data)
np.argwhere(np.array(df['score'] % 5 == 0)) #返回能够被5整除的score的索引位置
找出两列中同一行相同的值的索引
df['cycle'] = [2.0, 3.0, 6.0, 3.0, 5.0, 2.0, 7.0, 5.0]
#方法一:值相等
df[df['score'] == df['cycle']].index
#方法二
np.where(df['score']==df['cycle'])
总结
numpy和pandas这玩意直接看固然枯燥瞌睡,但是这些都是必备的实用知识,再瞌睡也是要好好看看的