当前位置:   article > 正文

pandas基础教程:(Dataframe操作/ Series操作/读取CSV文件/读取npy文件/pandas与numpy/数据科学)_dataframe 读取csv

dataframe 读取csv

目录

1 Dataframe

1.1 取出Dataframe中的数据

1.2 遍历DataFrame

1.3 dataframe添加行的办法:

1.3.1 loc

1.3.2 concat

1.3.3 append

1.4  DataFrame读取和修改

1.4.1  修改对应位置的值

1.4.2  查询对应位置的值

1.4.3  iloc

1.4.4 at

1.4.5  iat

1.4.6 直接打印

1.5 删除行列

1.5.1删除列

1.6 创建空的DataFrame

1.7 判断dataframe是否为空

1.8 查看dataframe开头和结尾数据

1.9 对一个DataFrame的每一列都统计分析8个属性

1.10读取CSV文件为DataFrame

1.11读取出Dataframe中的数据

1.11.1 取出第一行数据

1.11.2 取出某一列数据

1.12 遍历DataFrame

1.12.1 itertuples 按行遍历

1.12.2 iterrows 按行遍历

1.12.3 iteritems 按列遍历

2 Series 常用属性和方法

获取值

3 设置pandas打印不省略

4 pandas缺失值填充

5 python pandas 之drop()函数

6 读取文件夹所有文件(夹)的名字

7 设置pandas打印不省略

7.1 设置不省略列(将列全部打印)

7.2 设置不省略行(将行全部打印)

8 保存npy格式的数据

9 pandas.describe()

10 保留两位小数


1 Dataframe

1.1 取出Dataframe中的数据

取出第一列数据

  1. import pandas as pd
  2. df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
  3. print(df_data[0:1])

取出某一行数据

print(df_data.valid)

或者

print(df_data['valid'])

1.2 遍历DataFrame

itertuples 按行遍历

  1. import pandas as pd
  2. df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
  3. for i in df_data.itertuples():
  4.    print(i)  
  5.    print(i[1])

iterrows 按行遍历

  1. import pandas as pd
  2. df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
  3. for i,row in df_data.iterrows():
  4.    print(i)
  5.    print(row[2])

iteritems 按列遍历

  1. import pandas as pd
  2. df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
  3. for column_name, Series_values in df_data.iteritems():
  4.    print(column_name)
  5.    print(Series_values)
valid
0         2016/7/1 0:05
1         2016/7/1 0:24
2         2016/7/1 0:44
3         2016/7/1 0:49
4         2016/7/1 1:05
5         2016/7/1 1:24
6         2016/7/1 1:44
7         2016/7/1 1:47
8         2016/7/1 2:05
9         2016/7/1 2:24
10        2016/7/1 2:44
11        2016/7/1 2:50
12        2016/7/1 3:04
13        2016/7/1 3:24

1.3 dataframe添加行的办法:

1.3.1 loc

  1. df_empty = [tmstp, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]
  2. data_seq.loc[i] = df_empty

1.3.2 concat

data_seq = pd.concat([data_seq, raw_data], ignore_index=True)

1.3.3 append

  1. import pandas as pd
  2. import numpy as np
  3. data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
  4. print(data)
  5. a_df = pd.DataFrame(
  6. [['2016/7/1 0:00', np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, '10000', np.nan, np.nan]],
  7. columns=['valid', 'tmpf', 'dwpf', 'relh', 'drct', 'sknt', 'alti', 'vsby', 'skyc1', 'skyl1', 'feel'])
  8. data = data.append(a,ignore_index = True)
  9. print(data)

输出结果在data的最后一行加入了a_df的数据,并且最后一行的索引为2934,如果ignore_index = False,最后一行的索引为0

1.4  DataFrame读取和修改

1.4.1  修改对应位置的值

a、知道index 和列名的时候

  1. df_data.loc[0,'valid'] = '2016/7/1 0:00'
  2. df_data.loc[0,'tmpf'] = 1

b、不知道index 根据条件修改的时候

df_data.loc[(df_data['valid']=='2016/7/1 0:00'),'tmpf'] = 0

1.4.2  查询对应位置的值

a、查对应行

  1. df[0:] #第0行及之后的行,df的全部数据
  2. df[:2] #第3行之前的数据不包含第三行 左开右闭
  3. df[0:1] #第0
  4. df[1:3] #第2行到第3行(不含第4行)
  5. df[-1:] #最后一行
  6. df[-3:-1] #倒数第3行和倒数第2行,因为没有-0,所以没有最后一行

b、使用索引值取对应位置的元素值

  1. print(df_data.loc[0,'valid'])
  2. print(df_data.loc[0,['valid','tmpf']])

1.4.3  iloc

iloc按照行与列的索引提取元素

a、打印

  1. print(df_data.iloc[0, 0]) # 第1行第1列的数据
  2. print(df_data.iloc[1, 2]) # 第2行第3列的数据
  3. print(df_data.iloc[[1, 3], 0:2]) # 第2行和第4行,从第1列到第2列(左闭右开不包含第3列)的数据
  4. print(df_data.iloc[1:3, [1, 2]]) # 第2行到第3行(不包含第1,4行),第2列和第3列的数据

b、修改

  1. df_data.iloc[0,1:4] = [88.88,88.88,88.88] #修改一无素
  2. df_data.iloc[:3,5] = [11,22,33] #修改一整列

1.4.4 at

访问个别元素

print(df_data.at[5,'valid'])

1.4.5  iat

print(df_data.iat[0,0])

1.4.6 直接打印

print(df_data[df_data.tmpf < 60].valid)

1.5 删除行列

1.5.1删除列

all_data.drop(['Datetime'], axis=1, inplace=True)

1.6 创建空的DataFrame

  1. data_seq = pd.DataFrame(
  2. columns=['valid', 'tmpf', 'dwpf', 'relh', 'drct', 'sknt', 'alti', 'vsby', 'skyc1', 'skyl1', 'feel'])

1.7 判断dataframe是否为空

  1. if data.empty:
  2. print('该dataframe为空')

1.8 查看dataframe开头和结尾数据

  1. print(data_seq.head(100))
  2. print(data_seq.tail(100))

1.9 对一个DataFrame的每一列都统计分析8个属性

print(one_data.describe())

1.10读取CSV文件为DataFrame

cur_df = pd.read_csv(data_path, names=col_names)

1.11读取出Dataframe中的数据

1.11.1 取出第一行数据

  1. import pandas as pd
  2. df_data=pd.read_csv('path', nrows=n)
  3. print(df_data[0:1])

1.11.2 取出某一列数据

  1. print(df_data.valid)
  2. #或者
  3. print(df_data['valid'])

1.12 遍历DataFrame

1.12.1 itertuples 按行遍历

  1. for i in df_data.itertuples():
  2. print(i)

1.12.2 iterrows 按行遍历

  1. for i,row in df_data.iterrows():
  2. print(i)

1.12.3 iteritems 按列遍历

  1. for column_name, Series_values in df_data.iteritems():
  2. print(column_name)

2 Series 常用属性和方法

将DataFrame一列转化为Series

  1. import pandas as pd
  2. df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
  3. one_data = pd.Series(df_data.skyc1)
  4. print("数据的值: ",one_data.values)
输出:数据的值:  ['CLR' 'CLR' 'CLR' ... 'FEW' 'FEW' 'FEW']

获取值

获取索引

print("索引的值原始值: ", one_data.index)
输出:索引的值原始值:  RangeIndex(start=0, stop=2934, step=1)

转化为list

print("索引的值转换后: ", list(one_data.index))

获取每对值:

  1. # 获取每对索引的值, 使用 items 方法
  2. print("每对索引和值原始值: ", one_data.items)
输出:
1       CLR
2       CLR
3       FEW
4       CLR
5       CLR
6       CLR
7       FEW
8       CLR
9       CLR
10      CLR
11      CLR
12      CLR

遍历

  1. for value in data.values:
  2. print(value)

3 设置pandas打印不省略

设置不省略列(将列全部打印)

pd.set_option('display.width', None)

设置不省略行(将行全部打印)

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

4 pandas缺失值填充

对数值进行插值填充

data_seq = data_seq.interpolate(method='linear', limit_direction='forward')

limit_direction:向前插值或者向后插值

method

linear:线性插值

nearest:阶梯插值,相当于0阶B样条曲线

zero:复制邻近值

slinear:滑动线性插值

quadratic:平方插值

cubic:立方插值

barycentric:重心

pad:对现有值进行插值,适合字符数据

( 'time'(时间), 'index'(索引), 'values'(序列值), 'pad'(前向填充), 'nearest'(最邻近), 'zero'(零值), 'slinear'(滑动线性), 'quadratic'(2次插值), 'cubic'(3次插值), 'spline'(样条函数), 'barycentric'(重心), 'polynomial'(分段多项式), 'from_derivatives'(衍生), 'krogh'(克罗格), 'piecewise_polynomial'(分段多项式),'pchip'(分段三次Hermite多项式插值), 'akima'(akima光滑插值), 'cubicspline'(3次样条))

5 python pandas 之drop()函数

  1. import pandas as pd
  2. import numpy as np
  3. data=pd.DataFrame(np.arange(20).reshape((5,4)),columns=list('ABCD'),index=['a','b','c','d','e'])
  4. print(data)
  5. print('*'*40)
  6. print(data.drop(['a'])) #删除a 行,默认inplace=False,
  7. print('*'*40)
  8. print(data)# data 没有变化
  9. print('*'*40)
  10. print(data.drop(['A'],axis=1))#删除列
  11. print('*'*40)
  12. print(data.drop(['A'],axis=1,inplace=True)) #在本来的data 上删除
  13. print('*'*40)
  14. print(data)data 发生变化

6 读取文件夹所有文件(夹)的名字

file_name_arr = os.listdir('./data')

7 设置pandas打印不省略

7.1 设置不省略列(将列全部打印)

pd.set_option('display.width', None)

7.2 设置不省略行(将行全部打印)

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

8 保存npy格式的数据

  1. import numpy as np
  2. data_1 = np.zeros((3, 3))
  3. # 将 ndarray 类型的数据以字典的形式保存在扩展名为 npz 的数据文件中
  4. np.save("test.npy", data_1)

9 pandas.describe()

count:数量统计,此列共有多少有效值 unipue:不同的值有多少个 std:标准差 min:最小值 25%:四分之一分位数 50%:二分之一分位数 75%:四分之三分位数 max:最大值 mean:均值

离散值特有的:

unique:不重复的离散值数目,去重之后的个数 top: 出现次数最多的离散值 freq: 上述的top出现的次数

  1. import pandas as pd
  2. df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
  3. z = df_data.describe()

取出某一个参数

  1. import pandas as pd
  2. df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
  3. z = df_data.describe().loc['mean']

10 保留两位小数

  1. a = 1.233
  2. print(a.round(2)))

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/609202
推荐阅读
相关标签
  

闽ICP备14008679号