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

目录

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中的数据

取出第一列数据

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

取出某一行数据

print(df_data.valid)

或者

print(df_data['valid'])

1.2 遍历DataFrame

itertuples 按行遍历

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

iterrows 按行遍历

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

iteritems 按列遍历

import pandas as pd
df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
for column_name, Series_values in df_data.iteritems():
    print(column_name)
    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

df_empty = [tmstp, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]
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

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

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

1.4  DataFrame读取和修改

1.4.1  修改对应位置的值

a、知道index 和列名的时候

df_data.loc[0,'valid'] = '2016/7/1 0:00'
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、查对应行

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

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

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

1.4.3  iloc

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

a、打印

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

b、修改

df_data.iloc[0,1:4] = [88.88,88.88,88.88] #修改一无素
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

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

1.7 判断dataframe是否为空

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

1.8 查看dataframe开头和结尾数据

print(data_seq.head(100))
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 取出第一行数据

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

1.11.2 取出某一列数据

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

1.12 遍历DataFrame

1.12.1 itertuples 按行遍历

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

1.12.2 iterrows 按行遍历

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

1.12.3 iteritems 按列遍历

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

2 Series 常用属性和方法

将DataFrame一列转化为Series

import pandas as pd
df_data = pd.read_csv('my_dataset\wx_data\PeMSD8\PeMSD8.csv', nrows=2934)
one_data = pd.Series(df_data.skyc1) 
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))

获取每对值:

# 获取每对索引的值, 使用 items 方法
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

遍历

for value in data.values:
    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()函数

import pandas as pd
import numpy as np
data=pd.DataFrame(np.arange(20).reshape((5,4)),columns=list('ABCD'),index=['a','b','c','d','e'])
print(data)
print('*'*40)
print(data.drop(['a'])) #删除a 行,默认inplace=False,
print('*'*40)
print(data)#  data 没有变化
print('*'*40)
print(data.drop(['A'],axis=1))#删除列
print('*'*40)
print(data.drop(['A'],axis=1,inplace=True)) #在本来的data 上删除
print('*'*40)
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格式的数据

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

9 pandas.describe()

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

离散值特有的:

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

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

取出某一个参数

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

10 保留两位小数

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

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器学习杨卓越

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值