Python3 Pandas

多少行
row_count = len(data.index)

多少列
columns_count = len(data.columns)

def getColumn_ByIndex(df,column_index):
    #根据索引获取列
    row_count = len(df.index) #行数
    columns_count = len(df.columns) #列数
    if(column_index >= columns_count):
        s1 = "索引 "+ str(column_index)+' 超出范围 [0:'+ str(columns_count-1)+"]"
        raise Exception(s1)
    #取值范围 iloc[0:row_count+1,0:column_index+1]  
    #取值范围 iloc[行索引开始:行索引结尾,列索引起始:列索引结尾]   [索引区间范围 开始 至 结尾-1)
    return df.iloc[0:row_count+1,column_index:column_index+1]  #+1是因为 它取值范围是 [包前:不包后)
    
取某一行的值
j1 = getColumn_ByIndex(df, 0)  #取第一行的值 得到一个list

def getRow_ByIndex(df,row_index):
    #根据下标获取行
    row_count = len(df.index) #行数
    if(row_index >= row_count):
        s1 = "索引 "+ str(row_index)+' 超出范围 [0:'+ str(row_count-1)+"]"
        raise Exception(s1)
        #[索引区间范围 开始 至 结尾-1)
    return df.iloc[row_index:row_index+1]  #+1是因为 它取值范围是 [包前:不包后)

取某一列的值
h1 = getRow_ByIndex(df,0)  # 取第一列的值 得到一个list

获取某一格,data.iloc[行,列]
box1 = df.iloc[3,1] #取第四行第二列的值

iloc 用法
v1 = df.iloc[1:100] #取索引为 1 -99 行的数据
print(v1) 
v2 = df.iloc[:1] #取索引为0 行的数据
print(v2) 
v3 = df.iloc[[0,100],0:2] #取第0行 的 第0列值  和 第1列值 并且取 第100行 的 第0列值  和 第1列值
#换种说法 取第0行 的 0至1列 值 并且取 第100行 的 0至1列 值

print(v3) 
v3 = df.iloc[0:100,0:1] #取 行索引0 至  行索引99的  列索引为0的值,也就是获取前100行第一列的值
print(v3) 

每列的列名称
print(data.columns)

根据列名称 获取某列
print(data['姓名'])

列数据的格式
data['B'].dtype

输出所有列的 列名称 及类型
for i in df.columns:
    print(f'列名称:{i},该列数据类型:{df[i].dtype}')

更改数据格式:
df['price'] = df['price'].astype('int')
df['date'] = df['date'].astype(str)


更改全部的数据格式:
for i in data.columns:
    data[i] = data[i].astype('float')
    print(data[i].dtypes)

删除某行
df.drop([0,1],inplace=True) #把删除掉索引为0的行

删除某列
df.drop(data.columns[0],axis=1,inplace=True) #把删除掉索引为0的列

#函数定义:DataFrame.drop(labels=None,axis=0, index=None, columns=None, inplace=False)
#默认情况下删除某一行或者几行,如果要删除列必须axis=1
#注意:inplace为真则表示在原数据上操作,为False表明在原数据的copy上操作

计数,平均值,标准差,最小值,最大值
data['姓名'].count() #计数
data['prince'].mean()  #平均值
df['prince'].std()  #标准差
df['prince'].min()  
df['prince'].max()

用列prince的均值对NA进行填充:
df['prince'].fillna(df['prince'].mean())

清除city字段的字符空格:
df['city']=df['city'].map(str.strip)

删除后出现的重复值:
df['city'].drop_duplicates()

删除先出现的重复值:
df['city'].drop_duplicates(keep='last')

数据替换:
df['city'].replace('sh', 'shanghai')

大小写转换:
df['city']=df['city'].str.lower()


data.info()可以查看特征的概要:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 41266 entries, 0 to 41265
Columns: 502 entries, DATE to NYSE.ZTS
dtypes: float64(501), int64(1)
memory usage: 158.0 MB
从上述结果可知:该数据集数据共502列,41266行,502列分别


数据的前五行
data.head()


所在行号,姓名是列名,李燕是其中的一个名字所在的行号,但是不算标题行
hang =data[data['姓名'].isin(['李燕'])].index[0]

删除某列
data.drop(['姓名'],inplace=True)

名字列中 ,如果名字是两个字,那么名字之间就加空格
def func1(string):
    if len(string) ==2:
        return string[0]+'  '+string[1]
    else:
       return string
data['姓名']=data['姓名'].map(func1)

Pandas 中的条件判断:

import pandas as pd

# 创建一个 DataFrame
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, 30, 35, 40],
    'gender': ['Female', 'Male', 'Male', 'Male']
})

# 使用布尔索引进行筛选
female_df = df[df['gender'] == 'Female']
print(female_df)

# 使用多个条件进行筛选
young_male_df = df[(df['gender'] == 'Male') & (df['age'] < 35)]
print(young_male_df)

# 使用 isin() 方法进行筛选
selected_df = df[df['name'].isin(['Alice', 'David'])]
print(selected_df)

在上面的示例代码中,使用布尔索引 df['gender'] == 'Female' 来筛选性别为女性的数据;使用多个条件 df['gender'] == 'Male' & df['age'] < 35 来筛选性别为男性且年龄小于 35 岁的数据;使用 df['name'].isin(['Alice', 'David']) 方法来筛选名字为 Alice 或 David 的数据。

除了上述方法外,还可以使用其他条件判断操作符,例如:

  • 等于:==
  • 不等于:!=
  • 大于:>
  • 小于:<
  • 大于等于:>=
  • 小于等于:<=

使用这些操作符可以实现更复杂的条件判断。

 pandas所有数据格式 数据类型

'int': 有符号整数或无符号整数类型
'float': 浮点数类型
'object': 是一种通用的数据类型,用于存储各种数据类型的混合数据,例如字符串、列表和字典等。通常情况下,当 Pandas 无法确定一个列的数据类型时,会将其指定为 object 类型。明确字符串类型:df['date'] = df['date'].astype(str)


'bool': 布尔类型,True 或 False
'datetime64': 日期和时间类型
'timedelta': 时间间隔类型
'category': 分类类型,用于存储分类变量的数据

import pandas as pd

# 创建一个包含整数的 Series
s1 = pd.Series([1, 2, 3, 4])
print(s1)

# 创建一个包含浮点数的 Series
s2 = pd.Series([1.1, 2.2, 3.3, 4.4])
print(s2)

# 创建一个包含字符串的 Series
s3 = pd.Series(['apple', 'banana', 'cherry', 'date'])
print(s3)

# 创建一个包含布尔值的 Series
s4 = pd.Series([True, False, True, False])
print(s4)

# 创建一个包含日期和时间的 Series
s5 = pd.Series(['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04'], dtype='datetime64')
print(s5)

# 创建一个包含时间间隔的 Series
s6 = pd.Series([pd.Timedelta('1 days'), pd.Timedelta('2 days'), pd.Timedelta('3 days'), pd.Timedelta('4 days')])
print(s6)

# 创建一个包含分类变量的 Series
s7 = pd.Series(['cat', 'dog', 'cat', 'dog'], dtype='category')
print(s7)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值