pandas常用小知识

1.读取、输出csv文件

鸢尾花数据集为例

数据集链接:iris鸢尾花数据集
提取码:bpbr

import pandas as pd
import numpy as np
# 读取csv文件
Iris_dataset = pd.read_csv("D:\\dlaicourse-master\\TensorFlow Deployment\\Course 1 - TensorFlow-JS\\Week 1\\Examples\\iris.csv")
# 给每列一个column label
Iris_dataset.columns = ['data_index', 'sepal_len','sepal_width','petal_len','petal_width','species']
# 删除第一列
Iris_dataset.drop(columns='data_index',axis=1,inplace=True)
# 判断是否存在nan
if np.any(Iris_dataset.isnull()) == True:
    print("有空缺值")
    Iris_dataset.dropna()
else:
    print("无空缺值")
# 把 string label转换为int型
def fun(x):
    if x == 'setosa':
        return 0
    elif x == 'versicolor':
        return 1
    elif x == 'virginica':
        return 2
Iris_dataset['species'] = Iris_dataset['species'].apply(lambda x:fun(x))
# 设置DataFrame的输出格式
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)
# 前五条数据
print(Iris_dataset.head(5))
# 输出.csv文件
Iris_dataset.to_csv('iris_handle_data.csv')

注意:因为没有设置输出的行数或者列数,在pycharm上默认为0,所以没办法打印输出。
要添加以下代码:

# 设置DataFrame的输出格式
pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

输出文件为:
在这里插入图片描述

2.Dataframe

df的index和colomns操作

import pandas as pd
import numpy as np

pd.set_option('display.max_columns', None)
pd.set_option('display.max_rows', None)

#通过numpy生成随机的0-10的shape为(3,4)的dataframe
df_np = pd.DataFrame(np.random.randint(low=0, high=10, size=(3,4)))
print(df_np)

输出:
在这里插入图片描述

# 生成随机-1-1的dataframe
# 更改index
df_index = pd.DataFrame(np.random.randn(3,4), index=['f', 's', 't'])
print(df_index)

输出:
在这里插入图片描述

# 更改column
df_columns = pd.DataFrame(np.arange(12).reshape((3,4)), columns=['z', 'x', 'y', '22'])
print(df_columns)

输出:
在这里插入图片描述

# use dict to create dataframe
dates_value = pd.date_range('20210129', periods=3)
# dict的key对应df的column
df_dict = pd.DataFrame({'z': 10,
                        'x': pd.Series(np.array([1, 2, 3], dtype=np.float32)),
                        'y': dates_value})
print(df_dict)

输出:
在这里插入图片描述

df的各种属性

df2 = pd.DataFrame({'A':1.,
                    'B': pd.Timestamp('20200101'),
                    'C': pd.Series(1, index=list(range(4)), dtype='float32'),
                    'D': np.array([3, 6, 9, 12], dtype=np.int32),
                    'E': pd.Categorical(["test", "train", "test", "train"]),
                    'F': 'z'})
print(df2)
print(df2.dtypes)  # 查看数据的类型

在这里插入图片描述

print(df2.values)  # 查看各个数据

#通过colomn为E的单位的value来排序(如果是数字则按数字大小排列,字母按字母大小)
print(df2.sort_values(by='E'))

在这里插入图片描述

3.select

dates = pd.date_range('20200101', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)), index=dates, columns=['A','B','C', 'D' ])
print(df)

输出:
在这里插入图片描述

选择列

# 选择列名为'A'的列
print(df['A'])  # 等同于df.A

输出:
在这里插入图片描述

选择行

# 选择0-3行
print(df[0:3]) # 等同于 df['2020-01-01':'2020-01-03']
print(df.loc['20200103'])  # loc[]内单个一个label name时为行的index name
print(df.loc[:, 'A':'C'])  # : 代表所有的行都要 逗号后面为columns的label name

输出:
在这里插入图片描述

索引值取值

# select by position(index)= iloc
# 这里的selection index其实就是完全和numpy相似
# (row index, colomn index)
# 利用行的索引和列的索引来取值
print('iloc[3]:\n', df.iloc[3])
print('iloc[3:5, 1:3]:\n', df.iloc[3:5, 1:3])
print('iloc[[1, 3], 1:3]:\n', df.iloc[[1, 3], 1:3])

输出:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值