pandas入门

pandas入门

数据载入及初步观察

安装并导入库

安装:

pip install numpy
pip install pandas

导入:

import pandas as pd
import numpy as np

载入数据

1.载入数据
#相对路径
df = pd.read_csv('./train.csv')
#绝对路径
df = pd.read_csv('E:\Python\workspace\pandas入门/train.csv')

‘.tsv’是用‘\t’做分隔符的文件,'.csv’是用‘,’作分隔符的文件.

pd.read_csv()用于读取以’,'作为分隔符的文本文件。pd.read_table()用于读取以\t作为分隔符的文本文件。

读取文件时:

#对'.csv'文件
pd.read_csv('train.csv')
pd.read_table('train.csv',sep=',')
#对'.tsv'文件
pd.read_table('train.tsv')
pd.read_csv('train.tsv',sep='\t')

2.逐块读取
chunker = pd.read_csv('./train.csv',chunksize=1000)

用for循坏:

df = pd.read_csv(path,chunksize = 1000)
for chunker in df:
    print(chunker)

逐块读取就是将文本分成若干块。因为我们平时使用pandas来处理文件的时候,经常会遇到大文件,但有时候我们只想要读取其中的一部分数据或对文件进行逐块处理,便于处理数据

4.修改表头
  1. 直接修改,一一对应

    df = pd.read_csv('train.csv')
    df.columns = ['乘客ID','是否幸存','乘客等级(1/2/3等舱位)','乘客姓名','性别','年龄','堂兄弟/妹个数','父母与小孩个数','船票信息','票价','客舱','登船港口']
    df
    
  2. 用rename修改

# 在columns后面是一个字典形式,键是原列名,值是新列名。修改的时候只会改选择到的列。只有加上inplace = True,才会生效
df = pd.read_csv('train.csv')
df.rename(columns = {'PassengerId':'乘客ID','Survived':'是否幸存',
'Pclass':'乘客等级(1/2/3等舱位)','Name':'乘客姓名','Sex':'性别','Age':'年龄','SibSp':'堂兄弟/妹个数','Parch':'父母与小孩个数','Ticket':'船票信息','Fare':'票价','Cabin':'客舱','Embarked':'登船港口'},inplace=True)
df

初步观察

观察数据

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)
保存数据
df.to_csv('train_chinese.csv')
#不同的操作系统保存下来可能会有乱码。可以加入encoding='GBK'或者encoding = ’utf-8‘避免乱码出现。

Numpy,Pandas基础

构造数组
array1 = np.array([1,2,3,4,5]) #构造一维数组
array2 = np.array ([[1,2,3],[4,5,6],[7,8,9]]) #构造矩阵格式(多维数组)
array1 =np.arange(0,100,10) #构造等差的数组(数据由0~100前闭后开,由10为间距)
random_array = np.random.rand(10) #生成随机数组(数据都为0~1)
array2 = np.linspace(0,10,50) #含头含尾等距分布,分为50份

array3 =np.zeros(3)
#生成 array([0., 0., 0.])
array4 =np.zeros((3,3))
'''生成 array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])'''
array5 = np.ones((3,3)) #全一矩阵
array6 = np.empty((5,5)) #全空矩阵      
array7 = np.identity(3) #3*3的单位矩阵
数值计算
np.sum(array1) #array1求和
np.sum(array1,axis=0) #array1逐列求和
np.sum(array1,axis=1) #array1逐行求和
np.dot(x,y) #x、y两矩阵乘积
array.min()
array.argmin() #求最小值的索引位置
array.mean() #平均值
array.std() #标准差
array.var() #方差
array.round()  #四舍五入
array.round(decimals= 1) #指定精度
pandas

Series:一种类似于一维数组的对象,是由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成。仅由一组数据也可产生简单Series对象。注意:Series中的索引值是可以重复的。

DataFrame:一个表格型的数据结构,包含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型等),DataFrame即有行索引也有列索引,可以被看做是由Series组成的字典。

#查看某一特定列的所有值
#方法一
df.Cabin
#方法二
df['Cabin']
#上述两种方法的输出类型皆是Series,若想转成DateFrame类型则用下面这种方法
df[['Cabin']]
#删除列
#方法一 drop
del df['Unnamed: 0']
del df['a']
df.drop(['a','Unnamed: 0'],axis = 1)
#这里返回的只是一个副本,原本的df的a列并没有被删除
#所以想要df中的a列被删除,还要加上inplace = True
df.drop(['a','Unnamed: 0'],axis = 1,inplace = True)
df
#使用pop()函数
df.pop('a')
df.pop('Unnamed: 0')
iloc和loc
#oc:通过行标签索引行数据。当index 是整数:loc[n]表示索引的是第n行;当index 是字符:loc[‘d’]表示索引的是第’d’行。有行索引可以没有字段取值,但有字段取值前必须得有行索引,而且行索引只能为标签索引形式来取,不能按切片形式来取。单取切片形式可以,只是索引为左闭右闭。
#iloc:通过行索引获取行数据不能是字符,取索引必须按切片形式来取,不能按标签,这是与loc的不同。索引为左闭右开。iloc也可以取指定行列,只不过得按切片形式索引,不能直接拿标签索引来做。
df.iloc[1] #括号中为索引
df.loc['b'] #括号中为标签
reset_index()

它的作用是 重置索引。如果不用这个函数,可能会造成由于索引不符合原始值从而造成的数据分析的失误;可能会造成在两个DataFrame在合并时不匹配问题等。(drop等操作后面可能需要)

增删改查
#1.增,append()为某数组后增加另一数组,concat()为两数组合并
s1.append(s2,ignore_index=True)
df3 = pd.concat([df1,df2],axis=0)
df6 = pd.concat([df4,df5],axis=1)
#删,参考之前的
#改
#对series
s1.replace(to_replace=100, value=101, inplace=False)
#意思为:取代100这个数据,改为101,原数据不改
s1.rename(index = {'a':'A'},inplace = True)
#对dataframe
df.loc['a']['A'] = 150 
df.rename(columns = {'a':'A','b':'B','c':'C'}, inplace = True)
#查  loc,iloc
groupby
#该函数可以将相同数据部分合并,以便后续进行分析。
#求‘性别’栏为相同数据的‘年龄’的平均值
df.groupby('Sex')['Age'].mean()

数据分析实战

#让行索引升序排序
df.sort_index()
#让列索引升序排序
df.sort_index(axis=1)
#让列索引降序排序
df.sort_index(axis=1, ascending=False)
#任选两列数据同时降序排序
df.sort_values(by=['a', 'c'], ascending=False)
#通过泰坦尼克号数据如何计算出在船上最大的家族有多少人?
max(df['兄弟姐妹个数'] + df['父母子女个数'])
#对泰坦尼克号数据(trian.csv)按票价和年龄两列进行综合排序(降序排列),从数据中你能发现什么
df.sort_values(by=['票价', '年龄'], ascending=False)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值