pandas操作基础

数据分析之 pandas操作基础 (DataWhale第一章)

documentation:https://pandas.pydata.org/pandas-docs/stable/index.html

中文文档:https://www.pypandas.cn/

import pandas as pd

导入数据

  • pd.read_csv(filename):从CSV文件导入数据
  • pd.read_csv(filename ,chunksize): 从CSV文件导入数据,每xx行为一个数据模块,逐块读取
  • pd.read_table(filename):从限定分隔符的文本文件导入数据
  • pd.read_excel(filename):从Excel文件导入数据
  • pd.read_sql(query, connection_object):从SQL表/库导入数据
  • pd.read_json(json_string):从JSON格式的字符串导入数据
  • pd.read_html(url):解析URL、字符串或者HTML文件,抽取其中的tables表格
  • pd.read_clipboard():从你的粘贴板获取内容,并传给read_table()
  • pd.DataFrame(dict):从字典对象导入数据,Key是列名,Value是数据

查看、检查数据

  • df.head(n):查看DataFrame对象的前n行
  • df.tail(n):查看DataFrame对象的最后n行
  • df.shape():查看行数和列数
  • df.info():查看索引、数据类型和内存信息,行和列数
  • df.describe():查看数值型列的汇总统计,样本数据的个数,平均值、标准差、max、min、25%时的值
  • df.isnull().head():判断数据是否为空,为空的地方返回True,其余地方返回False
  • df.columns :查看DataFrame数据的每列的项
  • df.‘ColumnName’ / df.['ColumnName'] : 查看某一列的所有项 
  • s.value_counts(dropna=False):查看Series对象的唯一值和计数
  • df.apply(pd.Series.value_counts):查看DataFrame对象中每一列的唯一值和计数

导出数据

  • df.to_csv(filename):导出数据到CSV文件
  • df.to_excel(filename):导出数据到Excel文件
  • df.to_sql(table_name, connection_object):导出数据到SQL表
  • df.to_json(filename):以Json格式导出数据到文本文件

数据类型

Series 是带标签的一维数组,可存储整数、浮点数、字符串、Python 对象等类型的数据。轴标签统称为索引。调用 pd.Series 函数即可创建 Series。

>>> s = pd.Series(data, index=index)

DataFrame 是由多种类型的列构成的二维标签数据结构,类似于 Excel 、SQL 表,或 Series 对象构成的字典。

>>> pd.DataFrame(d, index=['d', 'b', 'a'], columns=['two', 'three'])

 

drop函数 (删除行或列)

DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

参数说明:
labels 就是要删除的行列的名字,用列表给定
axis 默认为0,指删除行,因此删除columns时要指定axis=1;
index 直接指定要删除的行
columns 直接指定要删除的列
inplace=False,默认该删除操作不改变原数据,而是返回一个执行删除操作后的新dataframe;
inplace=True,则会直接在原数据上进行删除操作,删除后无法返回。

因此,删除行列有两种方式:
1)labels=None,axis=0 的组合
2)index或columns直接指定要删除的行或列

#删除列名为a的列,如果inplace不写默认为false,并没有在原数据中删除
test_1.drop('a', axis=1, inplace=True)
test_1.head(3)

#删除列名为a的列
del test_1['a']

#删除第0,2,4列 ,axis=0表示行,1表示列
test_1.drop(df.columns[[0, 1, 3]], axis=1)

#隐藏某列,如'Age','Ticket',只观察其他几个列元素
test_1.drop(['Age','Ticket'],axis=1).head(3)

#这样写不可以,显示出来的是全部
test_1.drop(['Age','Ticket'],axis=1)
test_1.head(3)

 

set_index和reset_index函数

DataFrame.set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False) 

作用:设置单索引和复合索引。 
参数说明:
keys:列标签或列标签/数组列表,需要设置为索引的列
drop:默认为True,删除用作新索引的列
append:是否将列附加到现有索引,默认为False
inplace:输入布尔值,表示当前操作是否对原数据生效,默认为False
注:append添加新索引,drop为False,inplace为True时,索引将会还原为列
例:

In [307]: data
Out[307]: 
     a    b  c    d
0  bar  one  z  1.0
1  bar  two  y  2.0
2  foo  one  x  3.0
3  foo  two  w  4.0
 
In [308]: indexed1 = data.set_index('c')
 
In [309]: indexed1
Out[309]: 
     a    b    d
c               
z  bar  one  1.0
y  bar  two  2.0
x  foo  one  3.0
w  foo  two  4.0
 
In [310]: indexed2 = data.set_index(['a', 'b'])
 
In [311]: indexed2
Out[311]: 
         c    d
a   b          
bar one  z  1.0
    two  y  2.0
foo one  x  3.0
    two  w  4.0

DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”) 
作用:还原索引,重新变为默认的整型索引
参数说明:
level:数值类型可以为:int、str、tuple或list,默认无,仅从索引中删除给定级别。默认情况下移除所有级别。控制了具体要还原的那个等级的索引 。
drop:当指定drop=False时,则索引列会被还原为普通列;否则,经设置后的新索引值被会丢弃。默认为False。
inplace:输入布尔值,表示当前操作是否对原数据生效,默认为False。
col_level:数值类型为int或str,默认值为0,如果列有多个级别,则确定将标签插入到哪个级别。默认情况下,它将插入到第一级。
col_fill对象,默认‘’,如果列有多个级别,则确定其他级别的命名方式。如果没有,则重复索引名。

注:不仅仅恢复set_index的索引,对于其他筛选也有作用,比如midage = df[(df["Age"]>10)& (df["Age"]<50)]

In [318]: data
Out[318]: 
         c    d
a   b          
bar one  z  1.0
    two  y  2.0
foo one  x  3.0
    two  w  4.0
 
In [319]: data.reset_index()
Out[319]: 
     a    b  c    d
0  bar  one  z  1.0
1  bar  two  y  2.0
2  foo  one  x  3.0
3  foo  two  w  4.0

#不仅仅恢复set_index的索引,对于其他筛选也有作用,比如
midage = df[(df["Age"]>10)& (df["Age"]<50)]
midage = midage.reset_index(drop=True)

 

loc和iloc函数(选取某行/列)

loc函数:通过行索引 "Index" 中的具体值来取行数据(如取"Index"为"A"的行) df.loc[ [行号/名], [列号/名] ]
iloc函数:通过行号来取行数据(如取第二行的数据)  df.iloc[ [行号], [列号] ]

#将midage的数据中第100,105,108行的"Pclass","Name"和"Sex"的数据显示出来
midage.loc[[100,105,108],['Pclass','Name','Sex']]
midage.iloc[[100,105,108],[2,3,4]]

 

sort_index()和sort_values()排序

DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’, sort_remaining=True, by=None)
参数说明:
axis:索引,axis=1按列排序,axis=0按行排序
level:如果不是,则对指定索引级别的值进行排序
ascending:升序与降序排序,默认升序
inplace:如果为True,则就地执行操作
kind:{“快速排序”,“合并排序”,“堆排序”},默认为“快速排序”。选择排序算法。有关更多信息,另请参见ndarray.np.sort。 mergesort是唯一稳定的算法。对于DataFrame,此选项仅在对单个列或标签进行排序时适用。
na_position:[{'first','last'},默认为'last']首先将NaN放在开头,最后将NaN放在结尾。未针对MultiIndex实施。
sort_remaining:如果为true且按级别和索引排序是多层,则按指定级别排序后也按其他级别(按顺序)排序

DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
参数说明:
by:指出某个列/行名,对该列/行进行排序
其他参数同上

 

 

你可能感兴趣的:(数据分析,数据分析)