pandas

 Serises 和Dataframe两个函数

pandas的Serises,导入数据并插入索引

Dataframe ,创建一个二维表格,自带索引

import pandas as pd

data = [1, 2, 3, 4, 5]
series = pd.Series(data)
print(series)

import pandas as pd

data = {'Name': ['John', 'Emma', 'Peter'],
        'Age': [25, 28, 30],
        'Country': ['USA', 'Canada', 'UK']}

dataframe = pd.DataFrame(data)
print(dataframe)

结果是这样的 

0    1
1    2
2    3
3    4
4    5
dtype: int64
    Name  Age Country
0   John   25     USA
1   Emma   28  Canada
2  Peter   30      UK

Dataframe的一些类函数

1.data['Age'].values   data.to_numpy(dtype=float)

  • to_numpy()是一个方法调用,可以提供更多的选项,如指定数据类型。
  • values是一个属性,以简洁的方式返回DataFrame对象的NumPy数组表示。

表示从名为 data 的数据框(DataFrame)中选择名为Age 的列,并将该列的值转换为 NumPy 数组(array)

data.to_numpy(dtype=float) 和values的作用差不多

import pandas as pd

data = {
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 35, 40]
}

df = pd.DataFrame(data)
print(df['年龄'])
print("-------------------------------------")
print(df['年龄'].values)

0    25
1    30
2    35
3    40
Name: 年龄, dtype: int64
-------------------------------------
[25 30 35 40]

2.sample_data = dataframe.sample(frac=0.8)

随机取80%的数据

sample(frac=0.8, random_state=42)。还可以取随机种子

3.dataframe= dataframe.drop([1, 3, 5])

dataframe=dataframe.dorp(1)

删除索引为n的行(第n+1行),并返回一个新的 DataFrame

4.df.columns  查看特征df .index 查看索引列范围

import pandas as pd

data = {
    '姓名': ['张三', '李四', '王五', '赵六'],
    '年龄': [25, 30, 35, 40]
}

df = pd.DataFrame(data)
print(df.columns)
print(df.index)

#Index(['姓名', '年龄'], dtype='object')
#RangeIndex(start=0, stop=4, step=1)

5.x.iloc[]("integer location")和x.loc[]

x.iloc[0] 表示选择第一行的数据,x.iloc[:, 0] 表示选择第一列的数据。

x.loc[] 是基于标签进行索引的方法,它使用基于标签的索引来选择数据。您可以使用 loc[] 方法通过传递行或列的标签来访问 DataFrame 中的数据。例如,x.loc['x'] 表示选择具有标签 x 的行的数据,x.loc[:, 'column_name'] 表示选择名为 'column_name' 的列的数据。

import pandas as pd

data = {'A': [1, 2, 3],
        'B': ['a', 'b', 'c'],
        'C': [4.5, 5.5, 6.5]}

df = pd.DataFrame(data, index=['X', 'Y', 'Z'])

# 使用 iloc 根据索引位置选择数据
print(df.iloc[0])  # 选择第一行的数据

# 使用 loc 根据索引标签选择数据
print(df.loc['X'])  # 选择 index 为 'X' 的行数据
A      1
B      a
C    4.5
Name: X, dtype: object

 6.apply

DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)

当数据量很大时,对于简单的逻辑处理不建议使用

默认是计算列的。

f = lambda x: x.max()-x.min()
 
df = pd.DataFrame(np.random.randn(4,3),columns=list('bde'),index=['utah', 'ohio', 'texas', 'oregon'])
print(df)
 
t1 = df.apply(f)
print(t1)
 
t2 = df.apply(f, axis=1)
print(t2)


               b         d         e
utah    1.106486  0.101113 -0.494279
ohio    0.955676 -1.889499  0.522151
texas   1.891144 -0.670588  0.106530
oregon -0.062372  0.991231  0.294464
 
b    1.953516
d    2.880730
e    1.016430
dtype: float64
 
utah      1.600766
ohio      2.845175
texas     2.561732
oregon    1.053603
dtype: float64

pd导入数据和处理数据

  • .:表示当前目录。
  • ..:表示上级目录。
  • ../..:表示上级目录的上级目录。
  • folder/:表示当前目录下的名为 folder 的文件夹。
  • ./folder/:也表示当前目录下的名为 folder 的文件夹。

例如,假设存在一个名为 data 的文件夹,其中存储了 MNIST 数据集文件。如果该文件夹位于当前工作目录下,可以通过相对路径 data/ 来引用该文件夹。

DataFrame.fillna(DataFrame.mean(numeric_only=Ture))

填充缺失值(NaN)取每一列的mean

(csv文件用记事本打开后,发现列于列是通过逗号分开的)

当读写带有逗号分隔符的数据时,如果数据中包含字符串"NA",在使用Pandas或某些CSV解析库时,它们会将"NA"解释为缺失值(NaN)。这是因为"NA"在许多上下文中被视为缺失值的表示方式。

import pandas as pd

data = {'A': [1, 2, 3, 4, 5],
        'B': [3.0, None, 4.0, None, 6.0],
        'C': [5.0, 6.0, None, 8.0, 9.0]}

df = pd.DataFrame(data)

print(df)
# 填充数值列的缺失值
df[['A', 'B']] = df[['A', 'B']].fillna(df[['A', 'B']].mean())

print(df)

  A    B    C
0  1  3.0  5.0
1  2  NaN  6.0
2  3  4.0  NaN
3  4  NaN  8.0
4  5  6.0  9.0
   A         B    C
0  1  3.000000  5.0
1  2  4.333333  6.0
2  3  4.000000  NaN
3  4  4.333333  8.0
4  5  6.000000  9.0

pd.get_dummies(inputs, dummy_na=True)

的作用是将inputs中的分类变量进行虚拟编码,并且设置dummy_na=True来包含缺失值(NaN)。这意味着如果在inputs中存在缺失值,将会为缺失值创建一个额外的列,并用1表示。

One-Hot编码是一种常见的哑变量编码方法

pd.read_csv

import pandas as pd

# 读取名为data.csv的CSV文件,使用逗号分隔符,第一行为列名
df = pd.read_csv('data.csv')

# 读取名为data.csv的CSV文件,
#使用分号分隔符,第一行为列名,指定列名为['col1', 'col2', 'col3']
df = pd.read_csv('data.csv', sep=';', header=0, names=['col1', 'col2', 'col3'])
#header=0,将会以第一行作为列名,读取第二行以下的数据。
usecols是读取第几列。names把列名修改
# 读取名为data.csv的CSV文件,指定第一列为行索引,(万一有行索引,防止重复)
df = pd.read_csv('data.csv', index_col=0)

pandas常见函数

pd.concat(objs, axis=0, join='outer', ignore_index=False)

  • objs:要连接的DataFrame或Series的序列。可以是一个列表、元组、Series或字典等。
  • axis:指定连接的轴,默认为0。当axis=0时,沿着垂直方向(行)进行连接;当axis=1时,沿着水平方向(列)进行连接。
  • join:指定连接的方式,默认为'outer'。可以是'inner'表示交集;或是'outer'表示并集
  • ignore_index:指定是否忽略原始索引,默认为False。当ignore_index=True时,新生成的DataFrame将使用默认的整数索引。

以下是几个示例:

import pandas as pd

# 创建两个示例 DataFrame
data1 = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df1 = pd.DataFrame(data1)

data2 = {'A': [7, 8, 9], 'B': [10, 11, 12]}
df2 = pd.DataFrame(data2)

# 使用 pd.concat() 连接两个 DataFrame 沿着行的方向(axis=0)
result = pd.concat([df1, df2], axis=0)

print("Concatenated DataFrame:")
print(result)

import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]})
df2 = pd.DataFrame({'C': [5, 6], 'D': [7, 8]})

result = pd.concat([df1, df2], axis=1)
print(result)
   A  B  C  D
0  1  3  5  7
1  2  4  6  8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值