pandas的使用

Pandas的使用

官网:

pandas.pydata.org/

这里我提供一份关于中国主要城市GDP的csv文件

链接:pan.baidu.com/s/146UAVD 提取码:jbqj


目录

1、写入数据 2、读取数据

3、数据集信息查询

4、数据统计 5、数据预处理

导入模块

import pandas as pd


1、写入数据

data = {'city': ['北京', '天津', '沈阳', '上海', '南京', '杭州', '合肥', '青岛', '郑州', '武汉', '长沙', '广州', '深圳', '重庆', '成都', '西安'],
        '2018': [33105, 13362, 6292, 36011, 12820, 13509, 7822, 12001, 10143, 14847, 11003, 22859, 24221, 21588, 15342, 8349],
        '2017': [28014, 18549, 5864, 30632, 11715, 12603, 7213, 11037, 9130, 13410, 10535, 21503, 22490, 19424, 13889, 7469],
        '2016': [25669, 17885, 5546, 28178, 10503, 11313, 6274, 10011, 8113, 11912, 9356, 19547, 19492, 17740, 12170, 6257],
        '2015': [23014, 16538, 7272, 25123, 9720, 10050, 5660, 9300, 7311, 10905, 8510, 18100, 17502, 15717, 10801, 5801],
        '2014': [21330, 15726, 7098, 23567, 8820, 9206, 5157, 8692, 6776, 10069, 7824, 16706, 16001, 14262, 10056, 5492],
        '2013': [19800, 14442, 7158, 21818, 8011, 8343, 4672, 8006, 6201, 9051, 7153, 15420, 14500, 12783, 9108, 4884],
        '2012': [17879, 12893, 6602, 20181, 7201, 7802, 4164, 7302, 5549, 8003, 6399, 13551, 12950, 11409, 8138, 4366],
        '2011': [16251, 11307, 5915, 19195, 6145, 7019, 3636, 6615, 4979, 6762, 5619, 12423, 11505, 10011, 6854, 3864],
        '2010': [14113, 9224, 5017, 17165, 5130, 5949, 2701, 5666, 4040, 5565, 4547, 10748, 9581, 7925, 5551, 3241],
        '2009': [12153, 7521, 4269, 15046, 4230, 5088, 2102, 4854, 3308, 4621, 3745, 9138, 8201, 6530, 4503, 2724],
        '2008': [11115, 6719, 3860, 14069, 3775, 4781, 1664, 4436, 3003, 3960, 3000, 8215, 7806, 5793, 3900, 2190],
        '2007': [9846, 5252, 3221, 12494, 3283, 4100, 1334, 3786, 2486, 3141, 2190, 7109, 6801, 4676, 3324, 1763],
        '2006': [8117, 4462, 2519, 10572, 2773, 3441, 1073, 3206, 2013, 2590, 1798, 6073, 5813, 3907, 2750, 1473],
        '2005': [6969, 3905, 2084, 9247, 2411, 2942, 853, 2695, 1660, 2238, 1519, 5154, 4950, 3467, 2370, 1270],
        '2004': [6033, 3110, 1900, 8072, 1910, 2515, 589, 2163, 1377, 1956, 1133, 4115, 3422, 3034, 2185, 1095],
        '2003': [5007, 2578, 1603, 6694, 1576, 2099, 484, 1780, 1102, 1662, 929, 3496, 2895, 2555, 1870, 941],
        '2002': [4315, 2150, 1400, 5741, 1297, 1781, 412, 1518, 928, 1492, 812, 3001, 2256, 2232, 1667, 823],
        '2001': [3707, 1919, 1236, 5210, 1150, 1568, 363, 1316, 828, 1347, 728, 2685, 1954, 1976, 1492, 733]
        }
df = pd.DataFrame(data)
data.to_csv('中国主要城市2001-2018年GDP.CSV', encoding='gbk', index=False)

在当前目录下会生成一个中国主要城市2001-2018年GDP.CSV


2、读取数据

data = pd.read_csv('中国主要城市2001-2018年GDP.CSV', encoding='gbk', index_col='city')
print(data)

运行结果:

c0f8c7833ebda63810e0318236cd2c93.jpeg

3、数据集信息查询

data.shape            # 行数列数
data.dtypes           # 所有列的数据类型
data['col_name'].dtype      # 某一列的数据类型

data.index            # 行索引
data.columns          # 列索引
data.values           # 对象值

数据维度

data.ndim           

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.ndim)

运行结果:

4efc2c5b0da4acfcdf0fc19a5d38175f.png

列索引

data.columns

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.columns)

运行结果:

c6bc6d7d683044038ba2eb58a82096a2.png

对象值

data.values

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.values)

运行结果:

03d3adabcc00180df5f34f2e5c13ab42.png

整体情况查询

data.head()    # 显示头部几行(默认5行)
data.tail()    # 显示末尾几行(默认5行)  

数据集相关信息概览:索引情况、列数据类型、非空值、内存使用情况

data.info()  

基本使用:

77fd92374e826d286d0b675e92228c63.jpeg

快速综合统计结果

data.describe() 

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.describe())

运行结果:

db79a54a86078d768d3a6e5275f12d04.png

你也可以指定某列

例子:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.describe().get('2018'))

运行结果:

6daca2c4cd3b9138c31494e73d1bf26e.png

也可以指定某列的某个统计值

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.describe().get('2018').get('mean'))

运行结果:

b4a5da96d0031f9600cd10a4c49cdcc8.png


也可以进行切片

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.describe().get('2018')[:5])

运行结果:

cc1bfc3301dca8d1f795b475ae8a4fd2.png



4、数据统计

4.1、数据采样sample()

随机挑选数据

e084c43ac9bfa8c2694b30d57e0a1c78.png

n:样本数

replace:样本有无更换(有无放回)(默认不放回)

weights:权重

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.sample(3, replace=True))

运行结果:

bf547fa29244e39613593b5d7624d35a.png

4.2 计算均值mean()

计算每列的均值

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.mean())

运行结果:

af4da5b04df71807704296ae0e56fc45.png

计算每行的均值

需要在读取数据的时候将city设置为索引

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk", index_col='city')
print(data.mean(axis=1))

deaa505ac3dad812edf2dc59c1abba43.png

4.3 计算便准差std()

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data['2018'].std())

运行结果:

7bb7dc07368ace31ba362159def43cae.png

计算每列的标准差

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.std())

运行结果:

fba4ed9a96ba51b92b4179563b19f055.png

计算每行的标准差

需要在读取数据的时候将city设置为索引

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk", index_col='city')
print(data.std(axis=1))

运行结果:

ea3157329a4d2444024772fc9d7db286.png

axis为0时对列进行操作,为1时对行进行操作

4.4 计算方差var()

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data['2018'].var())

运行结果:

2483feaa3ac3a90209ea31dc0b31a8ea.png

计算每一列的方差

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.var())

运行结果:

fd4086273c227f2c1728dd504a9375dd.png

计算每一行的方差

需要在读取数据的时候将索引设置为city

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk", index_col='city')
print(data.var(axis=1))

运行结果:

842bbc0fc25528590e4228d03dd5a4b4.png

4.5 计算协方差cov()

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.cov())

运行结果:

2221e8470de2b7b1c9b3f9d1d876b941.png

4.6 计算相关性corr()

基本使用:

data = pd.read_csv('中国主要城市2001-2018年GDP.csv', encoding="gbk")
print(data.corr())

运行结果:

461c93f364c2c7adad9809a4e3f83cd5.png

5、数据预处理

先创一个新的数据集

data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', np.nan],
         '2018': [33105, 36011, 22859, 24221, np.nan]}
data2 = pd.DataFrame(data2)

5.1 查看异常值

for i in data2:
    print(f'{i}:{data2[i].unique()}')

运行结果:

city:['北京' '上海' '广州(粤语)' '深圳' nan]
2018:[33105. 36011. 22859. 24221.    nan]

可以看到city、2018这两列都有一个空值(方法unique()是去重)


5.2 空值检测/处理

检测isnull()

print(data2.isnull())

运行结果:

9379fe3af38a3eb80fe1875d312f45a7.png

可以很直观的看到有两个空值

处理空值

1、直接删除包含空值的行

print(data2.drop([4]))

运行结果:

1ddbf73a552c9105ea879229b2a460ac.png

2、填充空值

b00234e89acb37c662c8926ce22200b3.png

value:用于填充的值,可以是具体值、字典和数组,不能是列表;

method:填充方法,有 ffill(填充上一个值)和 bfill(填充下一个值) 等

inplace默认为False(不修改原数据集),如果为True(则将修改原数据集)

方法一:填入上下的值

data2['city'].fillna(method='ffill', inplace=True)
print(data2)

运行结果:

c2674752975d2c7a706cef85b1bfa1a4.png

方法二:填入指定的值

data2['2018'].fillna(value=data2.describe().get('2018').get('mean'), inplace=True)
print(data2)

运行结果:

8e0226ebf69d293c1096f68c95eafe25.png

5.3 大小写转换

data['列名'].str.title()         # 将首字母大写
data['列名'].str.upper()         # 全部大写
data['列名'].str.lower()         # 全部小写

5.4 数据格式转换

先查看原本的数据类型

print(data2.info())

e63d0f129ed219a97081ad29447f7757.png
data2['2018'] = data2['2018'].astype('str')
print(data2.info())

运行结果:

7bf50fde2985f16cccbe5d300fd408a9.png

成功的将2018这列的类型从float64转变为了object

5.5 更改列/行名

5.5.1、修改列

1、rename()

data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', np.nan],
         '2018': [33105, 36011, 22859, 24221, np.nan]}
data2 = pd.DataFrame(data2)
print(data2.rename(columns={'city': '城市', '2018': 'GDP'}))

运行结果:

d0d9397b31217d8143db9fb5b0f8fcc9.png

2、

data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', np.nan],
         '2018': [33105, 36011, 22859, 24221, np.nan]}
data2 = pd.DataFrame(data2)
data2.columns = ['城市', 'GDP']
print(data2)

运行结果:

2b0e8bd6ba30ea7743e8d7c8034acc54.png

5.5.2、修改行

1、rename()

data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', np.nan],
         '2018': [33105, 36011, 22859, 24221, np.nan]}
data2 = pd.DataFrame(data2)
data2.rename({0: 'a', 1: 'b', 2: 'c'}, inplace=True)
print(data2)

运行结果:

f17c68b96bdef531391f1b0f072100f2.png

2、

data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', np.nan],
         '2018': [33105, 36011, 22859, 24221, np.nan]}
data2 = pd.DataFrame(data2)
data2.index = list('abcde')
print(data2)

运行结果:

1312d9e313212ec7d7bdd976125c7558.png

5.6 按照指定列的值排序


data2 = {'city': ['北京', '上海', '广州(粤语)', '深圳', np.nan],
         '2018': [33105, 36011, 22859, 24221, np.nan]}
data2 = pd.DataFrame(data2)
print(data2.sort_values(by='2018', ascending=False))    # ascending默认为True,即升序

运行结果:

cdd6e1754a7aa20d24216f31f9f20201.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值