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])
输出: