30分钟完成pandas入门

pandas是基于numpy的一种数据分析工具,熟练使用pandas可以大大降低我们的工作量
引入pandas包:

import numpy as np
import pandas as pd

pandas数据类型

pandas有两种数据类型:series和dataframe。
series是一种一维数据结构,每一个元素都有一个索引,与一维数组类似。索引可以使数字或者字符串,series结构如下:

dataframe则是二维数据结构,其存在于excel表格类似,有对应的行和列,其结构如下:
在这里插入图片描述

Series对象的创建

例1
#我们可以直接用Series函数来创建对象
import numpy as np
import pandas as pd
a=pd.Series([1,2,3,4,5])
print(a)
'''
输出为:
0    1
1    2
2    3
3    4
4    5
dtype: int64
#程序会自动生成index,从0开始编号
'''
例2
#当然也可以指定index,并且Series可以使用已有的列表、元素来创建对象,也可以利用ndarray来创建
import numpy as np
import pandas as pd
a=np.array([1,2,3,4,5,6])
b=pd.Series(a,index=['a','b','c','d','e','f'])
print(b)
'''
输出为:
a    1
b    2
c    3
d    4
e    5
f    6
dtype: int32
'''
例3
#Series也可以用来创建时间序列,但是必须指定start,end,period中最少两个值
import numpy as np
import pandas as pd
b=pd.date_range('20200101','20200106')
print(b)
'''
输出为:
DatetimeIndex(['2020-01-01', '2020-01-02', '2020-01-03', '2020-01-04',
               '2020-01-05', '2020-01-06'],
              dtype='datetime64[ns]', freq='D')
'''

DataFrame对象的创建

DataFrame有行名和列名,行列名我们都可以进行定义我个人理解的构造函数如下

pd.DataFrame(object,index=,columns=)
例1
import numpy as np
import pandas as pd
s=np.arange(1,7)
s=s.reshape(2,3)
a=pd.DataFrame(s,index=['a','b'],columns=['A','B','C'])
print(a)
'''
输出为:
   A  B  C
a  1  2  3
b  4  5  6
'''
例2
#还可以通过字典来创建DataFrame对象,键值对应index
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),
                'age':pd.Categorical(['18','19']),
               'score':pd.Categorical(['99','98'])})
print(a)
'''
输出为:
   name age score
0    dn  18    99
1  muss  19    98
'''

DataFrame属性

查看数据类型

我们可以使用DataFrame.dtypes函数来查看每一列的数据类型

import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),
                'age':18,
               'score':pd.Series(np.arange(98,100))})
print(a.dtypes)
'''
输出为:
name     category
age         int64
score       int32
dtype: object
'''

查看索引和列名

利用DataFrame.index函数来查看索引
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),
                'age':18,
               'score':pd.Series(np.arange(98,100))})
print(a.index)
'''
输出为:RangeIndex(start=0, stop=2, step=1)
'''
利用DataFrame.columns函数来查看列名
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),
                'age':18,
               'score':pd.Series(np.arange(98,100))})
print(a.columns)
#输出为Index(['name', 'age', 'score'], dtype='object')

查看数据和统计信息

利用DataFrame.values函数来查看数据
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),
                'age':18,
               'score':pd.Series(np.arange(98,100))})
print(a.values)
'''
输出为:
[['dn' 18 98]
 ['muss' 18 99]]
'''
利用DataFrame.describe()函数查看统计信息
import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),
                'age':18,
               'score':pd.Series(np.arange(98,100))})
print(a.describe())
'''
输出为:
        age      score
count   2.0   2.000000
mean   18.0  98.500000
std     0.0   0.707107
min    18.0  98.000000
25%    18.0  98.250000
50%    18.0  98.500000
75%    18.0  98.750000
max    18.0  99.000000

Process finished with exit code 0

'''

DataFrame常用操作

转置

关于转置操作不用多说了,numpy部分已经说过了

import numpy as np
import pandas as pd
a=pd.DataFrame({'name':pd.Categorical(['dn','muss']),
                'age':18,
               'score':pd.Series(np.arange(98,100))})
print(a.T)
'''
输出为:
        0     1
name   dn  muss
age    18    18
score  98    99
'''

排序

排序分为按照index排序和按值排序

按照index排序
import numpy as np
import pandas as pd
s=np.array([6,5,4,3,2,1]).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a.sort_index(axis=1))
'''
输出为:
   a  b
0  6  5
1  4  3
2  2  1
'''
按值排序
import numpy as np
import pandas as pd
s=np.array([6,5,4,3,2,1]).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a.sort_values(by='b'))
'''
输出为:
   a  b
2  2  1
1  4  3
0  6  5
'''

数据选择

选择列

这将会返回一个单独的列,相当于一个Series对象

import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a['a'])
'''
输出为:
0    1
1    3
2    5
'''

选择行

一个道理

#这里我有点迷,直接用行索引会报错,只有使用切片才可以输出,假如想输出第一行就用0:1的方法。
import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a[0:1])
'''
输出为:
   a  b
0  1  2
'''

标签选择loc

loc用来获得一个交叉的区域,比如我们想要第1,2行的第a,b列的数据:

import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a)
print('.')
print(a.loc[[1,2],['a','b']])
'''
输出为:
   a  b
0  1  2
1  3  4
2  5  6
.
   a  b
1  3  4
2  5  6
'''

当然也可以用来获取单行单列的数据。

import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a.loc[1])
'''
输出为:
   a  b
0  1  2
1  3  4
2  5  6
.
a    3
b    4
Name: 1, dtype: int32
'''

位置选择iloc

loc是通过标签来对行列进行选择,而iloc是通过行列的位置进行选择,比如说想要第二列,那列位置就写2(假设从1开始).

import numpy as np
import pandas as pd
s=np.arange(1,7).reshape(3,2)
a=pd.DataFrame(s,index=[0,1,2],columns=['a','b'])
print(a)
print('.')
print(a.iloc[[0,1],0:1])
'''
输出为
   a  b
0  1  2
1  3  4
2  5  6
.
   a
0  1
1  3
'''

读取文件和导出操作

导入函数 导出函数功能
read_csv to_csv
read_excel to_excel
read_sql to_sql
read_json to_json
read_msgpack to_msgpack
read_html to_html
read_gbq to_gbq
read_stata to_stata
read_sas to_sas
read_clipboard to_clipboard
read_pickle to_pickle

常用统计方法

函数 解释
count 非 NA 值的数量
describe 针对 Series 或 DF 的列计算汇总统计
min , max 最小值和最大值
argmin , argmax 最小值和最大值的索引位置(整数)
idxmin , idxmax 最小值和最大值的索引值
quantile 样本分位数(0 到 1)
sum 求和
mean 均值
median 中位数
mad 根据均值计算平均绝对离差
var 方差
std 标准差
skew 样本值的偏度(三阶矩)
kurt 样本值的峰度(四阶矩)
cumsum 样本值的累计和
cummin , cummax 样本值的累计最大值和累计最小值
cumprod 样本值的累计积
diff 计算一阶差分(对时间序列很有用)
pct_change 计算百分数变化
发布了35 篇原创文章 · 获赞 74 · 访问量 6771

猜你喜欢

转载自blog.csdn.net/weixin_45939019/article/details/104196337